我有一个非常简单的问题,但我想答案可能会有点复杂。
好。我们走吧。我有一个名为Xsplit Broadcaster的应用程序(http://www.xsplit.com/)。它支持通过RTMP流式传输视频。现在我要做的是:
+--(720p)--> TwitchTV FirstChannel
XSplit --(720p RTMP)-->[MyTranscodingServer]--+
+--(360p)--> TwitchTV SecondChannel
有一种简单的方法吗?
其他信息:两个频道都使用用户名/密码或streamkey在其RTMP端点上接受标准RTMP流。服务器操作系统是GNU / Linux
答案 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。