Jes*_*noy 2 ffmpeg stream rtmp live zeromq
我的设置如下:
module exec_publish和exec_publish_done钩子,我将主或备份推送到 FFmpeg CLI 过程,该过程将其重新流式传输到远程 RTMP 端点(在本例中为 Wowza 服务器,尽管它与我的问题不太相关)我的问题是,目前,如果主流停止,我必须停止重新流式传输到 Wowza 的 FFmpeg CLI 进程,并使用新的输入源(备份流)启动另一个进程。这通常会导致 Wowza 方面出现问题,因此我正在寻找一种方法来避免这种情况。
经过一番研究,我发现 FFmpeg 封装了 ZMQ 支持,但似乎文档非常稀疏。是否可以向正在运行的 FFmpeg 进程发送消息来提醒它必须将其源更改为不同的 RTMP 流?
多谢,
如果有人感兴趣,我用不同的方式解决了我的问题。我现在使用命名管道,如下所示:
PIPE_FILE= /path/to/pip/file
mkfifo $PIPE_FILE
exec 7<>$PIPE_FILE
ffmpeg -nostdin -i /path/to/source -acodec copy -vcodec copy -vbsf h264_mp4toannexb -f mpegts pipe:1 > $PIPE_FILE
Run Code Online (Sandbox Code Playgroud)
/path/to/source就此而言,可以是 FS 上的媒体文件或 RTMP 流。
然后,我从管道重新流式传输到最终 RTMP 端点:
ffmpeg -re -i $PIPE_FILE -c:v libx264 -preset veryfast -r 25 -g 50 -f flv $RTMP_ENDPOINT
Run Code Online (Sandbox Code Playgroud)
当$PIPE_FILE停止接收数据时(即,当流停止时,或者在从本地媒体文件发送数据的情况下,达到 EOF 时),我立即启动另一个 FFmpeg CLI 过程并从备份媒体文件/流中提供管道数据。
这使得重新流式传输 FFmpeg CLI 过程能够持续启动并运行。
| 归档时间: |
|
| 查看次数: |
1726 次 |
| 最近记录: |