中断后ffmpeg可以从管道恢复读取吗?

时间:2017-06-19 15:08:48

标签: linux ffmpeg named-pipes

我无法决定这是超级用户,SO还是视频制作,所以如果你认为我弄错了,我会道歉。

我从计算机上的各种输入获得了许多不同的视频流(一些是通过WiFi,一些RTMP等),我将它们全部转码为原始h264帧。

现在我想将它们输出到RTMP流。例如,我将camera1设置为输出到名为CAM01的命名管道。我可以让ffmpeg从管道中读取,但是当我想要切换摄像机时问题出现了。我希望杀死camera1输出到管道,然后启动一个新的进程,输出camera2到同一个CAM01管道将让ffmpeg接收流,但它挂在它杀死第一个相机之前收到的最后一帧。

但是,如果camera1的输出由于某种原因而中断(例如,与它的无线连接中断),那么FFmpeg在图片返回时拾取流没有问题。

基本上,有没有办法让ffmpeg继续读取管道,即使它暂时中断,或者我试图做的事情是不可能这样做的?

我是一个有命名管道的菜鸟,所以请原谅我潜在的无知。 我目前正在使用的命令(请注意,现在它会生成音频,因为我还没有对音频进行排序)

ffmpeg -re -ar 44100 -ac 2 -acodec pcm_s16le -f s16le -ac 2 -i /dev/zero -f h264 -i CAM01 -vcodec copy -acodec aac -ab 128k -g 120 -strict experimental -f flv "my_rtmp_URL"

如果重要的话,CAM01管道基本上只包含原始h264帧(就像你走出了生动的那样)

TIA!

编辑:忘了说,我是Linux Mint上的

1 个答案:

答案 0 :(得分:0)

对于任何想要做同样事情的人

如果在上一个输入被杀死之前开始写入管道,当前一个输入被杀死时,ffmpeg似乎不会继续编码。