From 4a9a3337ca92c48e17c5ff24e467dfb45d54b1f6 Mon Sep 17 00:00:00 2001 From: nodered Date: Sun, 5 Jul 2026 11:31:37 +0300 Subject: [PATCH] finalize video streaming issues --- flows.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/flows.json b/flows.json index 438a068..eb4a031 100644 --- a/flows.json +++ b/flows.json @@ -389,7 +389,7 @@ "type": "function", "z": "f1a1b1c1d1e1f1a1", "name": "prepare ffmpeg args", - "func": "msg.payload = [\n '-hide_banner',\n '-rtsp_transport', 'tcp',\n '-i', 'rtsp://admin:admin@192.168.0.11:554/live/main',\n '-an',\n '-c:v', 'copy',\n '-f', 'mpegts',\n '-mpegts_flags', 'resend_headers',\n 'pipe:1'\n].join(' ');\n\nreturn msg;", + "func": "msg.payload = [\n '-hide_banner',\n '-fflags', 'nobuffer', // не буферировать при probe stream info\n '-flags', 'low_delay', // включить low-delay на уровне декодера\n '-flush_packets', '1', // сразу сбрасывать пакеты, не копить их внутри muxer'а\n\n '-rtsp_transport', 'tcp', // тянуть RTSP по TCP (надёжнее на плохой сети)\n '-i', 'rtsp://admin:admin@192.168.0.11:554/live/main', // main-поток камеры\n\n '-an', // отключить аудио — нужен только видеофрейм\n '-c:v', 'copy', // не перекодировать видео, просто копировать кадры\n '-f', 'mpegts', // контейнер MPEG-TS для дальнейшего трансмультиплексирования\n '-mpegts_flags', 'resend_headers', // периодически повторять заголовки для надёжного декода\n 'pipe:1' // выводить поток в stdout (дальше забирает твой транспорт)\n].join(' ');\n\nreturn msg;", "outputs": 1, "timeout": "", "noerr": 0, @@ -648,7 +648,7 @@ "type": "function", "z": "4639c393461f4977", "name": "prepare ffmpeg args", - "func": "msg.payload = [\n '-hide_banner',\n '-rtsp_transport', 'tcp',\n '-i', 'rtsp://admin:admin@192.168.0.11:554/live/main',\n '-an',\n '-c:v', 'copy',\n '-f', 'mpegts',\n '-mpegts_flags', 'resend_headers',\n 'pipe:1'\n].join(' ');\n\nreturn msg;", + "func": "msg.payload = [\n '-hide_banner',\n '-fflags', 'nobuffer', // не буферировать при probe stream info\n '-flags', 'low_delay', // включить low-delay на уровне декодера\n '-analyzeduration', '100000', // ограничить анализ потока 100 ms (уменьшить стартовую задержку)\n '-probesize', '32768', // зондировать только 32 KB (быстрее старт, меньше буфера)\n '-flush_packets', '1', // сразу сбрасывать пакеты, не копить их внутри muxer'а\n\n '-rtsp_transport', 'tcp', // тянуть RTSP по TCP (надёжнее на плохой сети)\n '-i', 'rtsp://admin:admin@192.168.0.11:554/live/sub', // sub-поток камеры\n\n '-an', // отключить аудио — нужен только видеофрейм\n '-c:v', 'copy', // не перекодировать видео, просто копировать кадры\n '-f', 'mpegts', // контейнер MPEG-TS для дальнейшего трансмультиплексирования\n '-mpegts_flags', 'resend_headers', // периодически повторять заголовки для надёжного декода\n 'pipe:1' // выводить поток в stdout (дальше забирает твой транспорт)\n].join(' ');\n\nreturn msg;", "outputs": 1, "timeout": "", "noerr": 0, @@ -733,7 +733,7 @@ "type": "function", "z": "4639c393461f4977", "name": "prepare ffmpeg args", - "func": "msg.payload = [\n '-hide_banner',\n '-rtsp_transport', 'tcp',\n '-i', 'rtsp://admin:admin@192.168.0.12:554/live/main',\n '-an',\n '-c:v', 'copy',\n '-f', 'mpegts',\n '-mpegts_flags', 'resend_headers',\n 'pipe:1'\n].join(' ');\n\nreturn msg;", + "func": "msg.payload = [\n '-hide_banner',\n '-fflags', 'nobuffer', // не буферировать при probe stream info\n '-flags', 'low_delay', // включить low-delay на уровне декодера\n '-analyzeduration', '100000', // ограничить анализ потока 100 ms (уменьшить стартовую задержку)\n '-probesize', '32768', // зондировать только 32 KB (быстрее старт, меньше буфера)\n '-flush_packets', '1', // сразу сбрасывать пакеты, не копить их внутри muxer'а\n\n '-rtsp_transport', 'tcp', // тянуть RTSP по TCP (надёжнее на плохой сети)\n '-i', 'rtsp://admin:admin@192.168.0.12:554/live/sub', // sub-поток камеры\n\n '-an', // отключить аудио — нужен только видеофрейм\n '-c:v', 'copy', // не перекодировать видео, просто копировать кадры\n '-f', 'mpegts', // контейнер MPEG-TS для дальнейшего трансмультиплексирования\n '-mpegts_flags', 'resend_headers', // периодически повторять заголовки для надёжного декода\n 'pipe:1' // выводить поток в stdout (дальше забирает твой транспорт)\n].join(' ');\n\nreturn msg;", "outputs": 1, "timeout": "", "noerr": 0, @@ -818,7 +818,7 @@ "type": "function", "z": "4639c393461f4977", "name": "prepare ffmpeg args", - "func": "msg.payload = [\n '-hide_banner',\n '-rtsp_transport', 'tcp',\n '-i', 'rtsp://admin:admin@192.168.0.13:554/live/main',\n '-an',\n '-c:v', 'copy',\n '-f', 'mpegts',\n '-mpegts_flags', 'resend_headers',\n 'pipe:1'\n].join(' ');\n\nreturn msg;", + "func": "msg.payload = [\n '-hide_banner',\n '-fflags', 'nobuffer', // не буферировать при probe stream info\n '-flags', 'low_delay', // включить low-delay на уровне декодера\n '-analyzeduration', '100000', // ограничить анализ потока 100 ms (уменьшить стартовую задержку)\n '-probesize', '32768', // зондировать только 32 KB (быстрее старт, меньше буфера)\n '-flush_packets', '1', // сразу сбрасывать пакеты, не копить их внутри muxer'а\n\n '-rtsp_transport', 'tcp', // тянуть RTSP по TCP (надёжнее на плохой сети)\n '-i', 'rtsp://admin:admin@192.168.0.13:554/live/sub', // sub-поток камеры\n\n '-an', // отключить аудио — нужен только видеофрейм\n '-c:v', 'copy', // не перекодировать видео, просто копировать кадры\n '-f', 'mpegts', // контейнер MPEG-TS для дальнейшего трансмультиплексирования\n '-mpegts_flags', 'resend_headers', // периодически повторять заголовки для надёжного декода\n 'pipe:1' // выводить поток в stdout (дальше забирает твой транспорт)\n].join(' ');\n\nreturn msg;", "outputs": 1, "timeout": "", "noerr": 0,