ffmpeg 可以在中断后恢复从管道读取吗?
Can ffmpeg resume reading from a pipe after interruption?
我无法确定这是超级用户、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
对于任何试图做同样事情的人
如果您在上一个输入被终止之前开始写入管道,ffmpeg 似乎会在上一个输入被终止时继续不间断地编码。
我无法确定这是超级用户、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
对于任何试图做同样事情的人
如果您在上一个输入被终止之前开始写入管道,ffmpeg 似乎会在上一个输入被终止时继续不间断地编码。