从XSplit流式传输视频到不同分辨率和比特率的多个Justin TV / Twitch电视频道

时间:2012-08-29 15:39:57

标签: live rtmp flash-media-server transcoding

我有一个非常简单的问题,但我想答案可能会有点复杂。

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

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

有一种简单的方法吗?

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

1 个答案:

答案 0 :(得分: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。