我负责维护一个设备,该设备将实时网络摄像头流传输到远程中继服务器,并同时将流的一个版本写入本地磁盘。它通过具有两个输出的 ffmpeg 单个实例来完成此操作 - 一个输出到本地磁盘,另一个通过 rtsp 输出到流媒体服务器
我遇到一个问题,如果流媒体服务器因任何原因断开连接,ffmpeg 就会退出。如果直播流丢失,我并不真正担心,但本地录制也丢失是一个大问题 - 如果无法实时观看,这对特定业务流程不会造成巨大损害,但丢失本地存储的副本是一个大问题一场灾难
ffmpeg 使用类似于以下的命令行启动:
ffmpeg -thread_queue_size 4096 -async 1 -f v4l2
-input_format mjpeg -framerate 30 -video_size 1280x720
-i /dev/video0 -thread_queue_size 4096 -async 1 -f alsa
-i plughw:CARD=Set,DEV=0 -r 30 -c:a aac -b:a 96k -c:v h264 -b:v 983040
-profile:v baseline -preset veryfast -pix_fmt yuv420p
-f tee -map 0:v -map 1:a
[f=matroska]'/var/recordings/yyyy-mm-dd/backup.mkv'|
[f=rtsp:rtsp_transport=tcp]rtsp://streamingserver.com:1234/session.sdp`
是否有任何方法(命令行开关等)可以使 ffmpeg 在输出流丢失时继续运行,而不是退出?
最佳答案
关于如果一个输出流失败,ffmpeg 就会退出 - 这可以预防吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47134034/