我无法决定这是超级用户,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上的答案 0 :(得分:0)
对于任何想要做同样事情的人
如果在上一个输入被杀死之前开始写入管道,当前一个输入被杀死时,ffmpeg似乎不会继续编码。