0

我有一个非常简单的问题,但我猜答案可能更复杂一些。

好的。我们走吧。我有一个名为 Xsplit Broadcaster ( http://www.xsplit.com/)的应用程序。它支持通过 RTMP 流式传输视频。现在我想做的是:

                                              +--(720p)--> TwitchTV FirstChannel
XSplit --(720p RTMP)-->[MyTranscodingServer]--+
                                              +--(360p)--> TwitchTV SecondChannel

有没有一种简单的方法可以做到这一点?

附加信息:两个频道都使用用户名/密码或流密钥在其 RTMP 端点上接受标准 RTMP 流。服务器操作系统是 GNU/Linux

4

1 回答 1

0

是的答案有点复杂。最简单的方法是使用 Gstreamer www.gstreamer.net 进行上述操作。它将接收 rtmp,然后您可以将其转码为其他两种格式。但是,如果您不了解 gstreamer,则必须稍微学习一下。

另一种选择是 ffmpeg,您在其中读取源复制它(比如进入命名管道)并为两个输出运行两个 ffmpeg。

两种方法都可以。gstreamer 将允许您编写自己的应用程序,这可以让您在未来获得更多控制权。ffmpeg 同样强大(gstreamer 使用 ffmpeg 进行大量操作),但正如我之前所说,gst 应用程序将来会提供更大的灵活性(如果你需要的话)。但是,您可以从命令行运行第一个版本。

像这样的东西应该适用于 gstreamer:[你必须找到你需要的确切管道。这只是一个指导]

 gst-launch rtmpsrc <options> ! decodebin2 name=d ! tee name=vt ! queue ! x264enc <options> ! flvmux name=m1 ! rtmpsink d. ! tee name=at ! faac <options> ! m1. vt. ! queue ! x264enc <otheroptions> ! flvmux name=m2 ! rtmpsink at. ! queue ! faac <otheroptions> m2. 

FFmpeg cmd 行应该类似于:

 ffmpeg -i rtmp://src -acodec aac <audio options> -vcodec libx264 <video options> -f flv rtmp://output  

但我不是 100% 确定它是否会像那样直接提供 rtmp 输出。如果没有,您可能必须使用 ffserver。

于 2012-08-30T07:26:45.753 回答