【发布时间】:2017-11-21 21:04:12
【问题描述】:
我无法确定这是超级用户、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 帧(就像你摆脱 raspivid 一样)
TIA!
编辑:忘了说,我在 Linux Mint 上
【问题讨论】:
-
Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super User 或Unix & Linux Stack Exchange 会是一个更好的提问地点。
标签: linux ffmpeg named-pipes