diff --git a/client/.env b/client/.env
index cd41370..b8dedb4 100644
--- a/client/.env
+++ b/client/.env
@@ -1 +1 @@
-VITE_API_URL=http://localhost:3000
\ No newline at end of file
+VITE_API_URL=http://192.168.1.23:3000
\ No newline at end of file
diff --git a/client/src/pages/SessionPage.tsx b/client/src/pages/SessionPage.tsx
index 31710b8..915ada9 100644
--- a/client/src/pages/SessionPage.tsx
+++ b/client/src/pages/SessionPage.tsx
@@ -150,21 +150,24 @@ function SessionPage() {
{/* Pixel Streaming Player - показывается когда сессия запущена */}
- {session.status === "started" && session.playerPort && (
-
-
setIsVideoInitialized(true)}
- />
-
- )}
+ {session.status === "started" &&
+ session.mode === "stream" &&
+ session.server?.localIp &&
+ session.playerPort && (
+
+
setIsVideoInitialized(true)}
+ />
+
+ )}
{/* Основная карточка с информацией */}
diff --git a/client/src/pages/TestPage.tsx b/client/src/pages/TestPage.tsx
index 2c7d5a6..d8f7c01 100644
--- a/client/src/pages/TestPage.tsx
+++ b/client/src/pages/TestPage.tsx
@@ -32,7 +32,7 @@ function TestPage() {
const response = await api
.post("sessions", {
json: {
- appId: "c1a06420-ca72-4a89-893e-3fe669bbbb99",
+ appId: "2914d736-b928-461c-b58f-e5d35d8b605d",
mode: "stream",
tier: "demo",
},
diff --git a/session-server/logs/.6c25b665cc60dab90c3b387b2a7b4da90595b19b-audit.json b/session-server/logs/.6c25b665cc60dab90c3b387b2a7b4da90595b19b-audit.json
deleted file mode 100644
index a79fc95..0000000
--- a/session-server/logs/.6c25b665cc60dab90c3b387b2a7b4da90595b19b-audit.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "keep": {
- "days": true,
- "amount": 14
- },
- "auditLog": "logs\\.6c25b665cc60dab90c3b387b2a7b4da90595b19b-audit.json",
- "files": [
- {
- "date": 1760357222809,
- "name": "logs\\server-2025-10-13.log",
- "hash": "d8c9aa8fe14287c28a5e6d97abfc99880c7be890d8f58eb2229e747850d1ac12"
- }
- ],
- "hashType": "sha256"
-}
\ No newline at end of file
diff --git a/session-server/src/index.ts b/session-server/src/index.ts
index 963a760..3b0c3c9 100644
--- a/session-server/src/index.ts
+++ b/session-server/src/index.ts
@@ -481,7 +481,7 @@ async function startApplication(session: SessionData): Promise {
streamerPort = await findFreePort(8080, 9000);
playerPort = await findFreePort(Math.min(streamerPort + 1, 9000), 9000);
sfuPort = await findFreePort(Math.min(playerPort + 1, 9000), 9000);
-
+
console.log(
`[${new Date().toISOString()}] 🔌 Найдены свободные порты - Streamer: ${streamerPort}, Player: ${playerPort}, SFU: ${sfuPort}`
);
@@ -514,8 +514,6 @@ async function startApplication(session: SessionData): Promise {
playerPort.toString(),
"--sfu_port",
sfuPort.toString(),
- "--max_players",
- "0",
],
{
detached: false,
@@ -554,7 +552,6 @@ async function startApplication(session: SessionData): Promise {
});
}
-
// Обработка завершения Cirrus процесса
cirrusProcess.on("exit", async (code, signal) => {
console.log(
@@ -585,12 +582,18 @@ async function startApplication(session: SessionData): Promise {
appProcess = spawn(
appPath,
[
- `-PixelStreamingURL=ws://127.0.0.1:${streamerPort}`,
+ "-PixelStreamingIP=127.0.0.1",
+ `-PixelStreamingPort=${streamerPort}`,
"-ForceRes",
"-ResX=1920",
"-ResY=1080",
"-Unattended",
"-RenderOffScreen",
+ "-PixelStreamingWebRTCMinBitrate=5000000",
+ "-PixelStreamingWebRTCMaxBitrate=20000000",
+ "-PixelStreamingH264Profile=HIGH",
+ "-PixelStreamingWebRTCDisableReceiveAudio=true",
+ "-PixelStreamingEncoderRateControl=VBR",
],
{
detached: false,
@@ -604,22 +607,12 @@ async function startApplication(session: SessionData): Promise {
);
} else {
// Local-режим: запускаем без Pixel Streaming
- appProcess = spawn(
- appPath,
- [
- "-ForceRes",
- "-ResX=1920",
- "-ResY=1080",
- "-Unattended",
- "-RenderOffScreen",
- ],
- {
- detached: false,
- stdio: ["ignore", "ignore", "pipe"],
- windowsHide: true,
- cwd: `C:\\apps\\${app.name}`,
- }
- );
+ appProcess = spawn(appPath, [], {
+ detached: false,
+ stdio: ["ignore", "ignore", "pipe"],
+ windowsHide: true,
+ cwd: `C:\\apps\\${app.name}`,
+ });
console.log(
`[${new Date().toISOString()}] 💻 Local-режим: приложение запускается без Pixel Streaming`
);
@@ -699,7 +692,13 @@ async function startApplication(session: SessionData): Promise {
// Обновить статус на "started" с PID приложения
// Для stream-режима также сохраняем Cirrus PID и порты
- if (mode === "stream" && cirrusPid && streamerPort && playerPort && sfuPort) {
+ if (
+ mode === "stream" &&
+ cirrusPid &&
+ streamerPort &&
+ playerPort &&
+ sfuPort
+ ) {
await updateSessionStatus(
sessionId,
"started",