Проблема перезапускается с ffmpeg, если источник / место назначения пропадает - PullRequest
0 голосов
/ 17 января 2020

Я использую следующую команду для пересылки видеопотока на другой сервер, но если источник / назначение на мгновение падает, ffmpeg сдается.

ffmpeg \
-i http://source_stream_ip:port \
-reconnect_at_eof 1 \
-reconnect_streamed 1 \
-y \
-shortest \
-c: libx264 \
    -crf:v 22 \
    -preset:v fast \
    -pix_fmt yuv420p \
    -x264opts keyint=10:no-scenecut=1 \
    -maxrate:v 256k \
    -bufsize:v 512k \
-c:a aac \
    -ac 2 \
    -b:a 96k \
    -maxrate:a 96k \
    -bufsize:a 192k \
-f flv \
rtmp://destination_stream_ip:port

Я пробовал это как пакетную команду, но это также в конечном итоге сдается.

#!/bin/bash
while :
do
ffmpeg \
-i http://source_stream_ip:port \
-reconnect_at_eof 1 \
-reconnect_streamed 1 \
-y \
-shortest \
-c: libx264 \
    -crf:v 22 \
    -preset:v fast \
    -pix_fmt yuv420p \
    -x264opts keyint=10:no-scenecut=1 \
    -maxrate:v 256k \
    -bufsize:v 512k \
-c:a aac \
    -ac 2 \
    -b:a 96k \
    -maxrate:a 96k \
    -bufsize:a 192k \
-f flv \
rtmp://destination_stream_ip:port
done

Может ли кто-нибудь порекомендовать улучшить выполнение этого или даже другого способа сделать это даже без ffmpeg с помощью другого инструмента командной строки? В настоящее время его слишком ненадежно использовать на постоянной основе.

1 Ответ

0 голосов
/ 18 января 2020

Опции -reconnect_at_eof и -reconnect_streamed следует ставить перед -i SOURCE:

ffmpeg \
-reconnect_at_eof 1 \
-reconnect_streamed 1 \
-i http://source_stream_ip:port \
...
...