将videoinputstream转换为RTMP

我想从我的android手机streamvideo录制到networking媒体服务器。

第一个问题是,当将MediaRecorder输出设置为套接字时,该stream缺less一些mdat大小的标题。 这可以通过在本地预处理该stream并添加缺less的数据stream来修复,以便生成有效的输出stream。

问题是如何从那里开始。

我怎样才能把这个stream输出为一个RTMPstream?

首先,让我们解开你的问题。 正如你猜测的那样,Android目前不支持RTMP 。 您可以使用一些库文件来添加支持,但这些可能不是完整的实现,或者有其他不良的副作用和错误,导致它们无法满足您的需求。

在这种情况下,通用的select是使用RTSP 。 它提供了一个可比较的会话格式,它具有自己的RFC ,当与RTP结合时,它的数据包结构与您所期望的协议非常相似(没有一些细节)。 您可以在这里执行必要的修正来将RTP / RTSP转换为RTMP,但如前所述,此类工作目前不在您的应用程序的开发范围之内。

所以,假设你想使用RTMP( 使这个线程无效 ), 并且上面链接的库不能满足你的需要。

例如,您可以使用Livu,Wowza和Adobe Flash Player录制和播放本教程 ,与Livu开发人员讨论关于授权客户端的内容。 或者,您可以使用此客户端库及其完整的Androidlogging器示例来构build您的客户端。

总结:

RTSP

  • 此线程使用Darwin Media Server , Windows Media Services或VLC

RTMP

  • 这个库 ,
  • 这个线程和本教程使用Livu , Wowza和Adobe Flash Player
  • 这个客户端库和这个示例logging器

祝您的应用程序好运。 我承认我对所有这些图书馆的理解还不够全面,但在撰写本文时,这似乎是这个领域的标准解决scheme。

编辑:

根据OP,走在RTMP库设置:

  • 这个图书馆 :他不能让图书馆的演示工作。 更重要的是,RTMPfunction是不完整的。
  • 这个线程和本教程使用Livu , Wowza和Adobe Flash Player :这篇教程介绍了如何使用video,但是关于发布的教程可能是简洁而不足的。
  • 这个客户端库和这个例子logging器 :给出的例子只包含audio发布。 需要做更多的工作才能完成。

总之:需要更多的工作。 其他答案和这些例子的改进,这里是需要的。

如果您在Android设备上使用Web浏览器,则可以使用WebRTC进行video捕获和服务器端logging,即使用Web Call Server 4

因此,完整的path是:

Android Chrome [WebRTC]> WCS4>录音

所以你不需要这里的RTMP协议。

如果您正在使用独立的RTMP应用程序,则可以使用任何RTMP服务器进行video录制。 据我所知,Wowza支持H.264 + Speex录制。