首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有一种方法在两个RTMP流之间混合(取决于哪个是向上的)使用类似于FFMPEG的东西?

是否有一种方法在两个RTMP流之间混合(取决于哪个是向上的)使用类似于FFMPEG的东西?
EN

Unix & Linux用户
提问于 2014-02-18 23:02:57
回答 1查看 4.2K关注 0票数 5

(对问题标题表示歉意,不太清楚该怎么说)

因此,我正在为本地局域网聚会开发一个交钥匙流解决方案/服务器,使用奇妙的nginx-rtmp处理来自我们的主PC的传入的RTMP流,并(希望)不间断地向to和其他类似的流服务发送一个信号。

我想要实现的主要目标之一是,如果我们不发送任何内容的话,让服务器切换到一个本地摄像头(或另一个流),这将完善我所瞄准的零停机方法。我已经研究了如何使用ffmpeg来实现这一点,并在以下方面进行了论证:

代码语言:javascript
复制
ffmpeg -i "rtmp://127.0.0.1/in/stream" -i "rtmp://127.0.0.1/webcam/stream" -vcodec copy -acodec copy rtmp://127.0.0.1/out/stream

但是ffmpeg拒绝开始输出,除非它同时接收到两种输入,如果失去了输入,它就会完全停止。

问题是,我想不出任何替代办法,只有:

  • 连接到nginx-rtmp的on_publish_done钩子并触发脚本或其他东西,触发一个网络摄像头流,在短时间延迟后启动(然后使用控制接口停止该流),或
  • 有另一个系统运行类似于开放广播软件和处理混合

如果有人有任何想法,不管有多傻,我都会很感激的,因为我很困惑!

EN

回答 1

Unix & Linux用户

发布于 2017-04-12 17:14:06

据我所知,您的工作流不能在FFmpeg中完成。该工作流可以在Wowza流引擎上使用称为循环直到Live的模块在服务器端完成。

https://www.wowza.com/docs/how-to-loop-a-pre-roll-until-a-live-stream-starts-loopuntillive

基本逻辑。

  1. 流1是“备份”流。这可以是VOD预录制文件,也可以是活动流。
  2. 流2是主要流。
  3. 如果只有流1在运行,那么就出现流1。当流2存在时,就切换到关键帧上的流2。
  4. 如果停止流2,则切换到关键帧上的流1。

我还没有在FFmpeg中找到这种逻辑。

请注意,当从一个流切换到另一个流时,理想的情况是所有流都是相同的。

视频:编解码器,宽度,高度,FPS,关键帧距离(GOP)和比特率。音频:编解码器、频道、频率和比特率。

FFmpeg是一个顺序相关的过滤器链,它接受输入,修改它,然后产生输出。您可以输入图像或视频,并输出图像或视频。音频是类似的,因为您可以在其中放置一个编解码器,修改它,并以您选择的音频格式将其转储出去。

您可以有多个输入和多个输出。在多个输入的情况下,这些输入可以被屏蔽到单个输出流中。

音频和视频来自不同的来源,以创建一个输出。

代码语言:javascript
复制
ffmpeg -i video.input -i audio.input -[modifications] -output

音频和视频来自一个来源,但要到多个输出。我在博客上的一篇文章中提到了这一点。

https://videoblerg.wordpress.com/2016/08/16/how-to-create-abr-content-with-ffmpeg-in-one-pass/

FFmpeg在设计上很简单,我在代码中没有发现任何可以支持您的工作流的东西。但这并不意味着我没有错过。

我知道这不是您想要的答案,但是您可以向FFmpeg添加代码以支持此功能,或者创建一个工具在FFmpeg之外执行此功能。创建的任何代码都应该是中立的,支持RTSP、RTMP、MPEG-TS、RTP/SDP、HLS和循环文件。因为这不能解决你的问题,我没有期望得到你的赏金+50代表。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/115806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档