From e8a007a4a9ef7b858698d1cddc24ce2043f75bde Mon Sep 17 00:00:00 2001 From: david Date: Tue, 1 Apr 2025 18:33:17 -0700 Subject: [PATCH] dual tuners fully working --- src/server.ts | 4 ++-- src/ws.ts | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/server.ts b/src/server.ts index 3c8c5be..39f6964 100644 --- a/src/server.ts +++ b/src/server.ts @@ -6,7 +6,7 @@ const HTTP_PORT = process.env.HTTP_PORT ? parseInt(process.env.HTTP_PORT, 10) : const WS_PORT = process.env.WS_PORT ? parseInt(process.env.WS_PORT, 10) : 3001; const STATIC_ROOT = process.cwd() + "/dist/static"; const TV_DEV_0 = process.env.TV_DEV_0 ?? '/dev/dvb/adapter0/dvr0' -const TV_DEV_1 = process.env.TV_DEV_1 ?? '/dev/dvb/adapter0/dvr1'; +const TV_DEV_1 = process.env.TV_DEV_1 ?? '/dev/dvb/adapter1/dvr0'; const zap = new Zap(); @@ -25,7 +25,7 @@ const getChannels = () => const httpServer = new HttpServer(HTTP_PORT, STATIC_ROOT, tune, getChannels); const tvWebSocket0 = new TVWebSocket(WS_PORT, TV_DEV_0); -// const tvWebSocket1 = new TVWebSocket(WS_PORT + 1, TV_DEV_1); +const tvWebSocket1 = new TVWebSocket(WS_PORT + 1, TV_DEV_1); httpServer.start(); diff --git a/src/ws.ts b/src/ws.ts index 6c3c416..4c0b0a3 100644 --- a/src/ws.ts +++ b/src/ws.ts @@ -15,6 +15,11 @@ export default class TVWebSocket { const videoTrack = this.createVideoTrack(ffmpegProcess); const audioTrack = this.createAudioTrack(ffmpegProcess); + + ffmpegProcess.stdio[2].on('data',data=>{ + // console.log("stdio[2] ",data.toString()) + }) + // WebSocket signaling server const wss = new ws.WebSocketServer({ port }); @@ -70,6 +75,13 @@ export default class TVWebSocket { '-vcodec', 'rawvideo', '-pix_fmt', 'yuv420p', '-f', 'rawvideo', + + //quality + '-fflags', '+discardcorrupt', + '-err_detect', 'ignore_err', + '-analyzeduration', '100M', + '-probesize', '100M', + 'pipe:3', // Audio @@ -109,6 +121,9 @@ export default class TVWebSocket { // Start FFmpeg and pipe video frames to the source videoStream.on('data', (chunk: Buffer) => { videoBuffer = Buffer.concat([videoBuffer, chunk]); + if (videoBuffer.length > FRAME_SIZE * 2) { + console.warn('Video buffer overrun — possible freeze trigger'); + } while (videoBuffer.length >= FRAME_SIZE) { const frameData = videoBuffer.slice(0, FRAME_SIZE); videoBuffer = videoBuffer.slice(FRAME_SIZE);