我想将视频录制从我的Android手机流式传输到网络媒体服务器。
第一个问题是,当将MediaRecorder
输出设置为套接字时,该流缺少一些mdat
大小的标头。这可以通过在本地预处理该流并将丢失的数据添加到流中以便生成有效的输出流来解决。
问题是如何从那里开始。
如何将该流作为RTMP流输出?
答案 0 :(得分:49)
首先,让我们解开你的问题。正如您所推测的那样,Android目前不支持RTMP。您可以使用few side libraries添加支持,但这些可能不是完整的实现,或者有其他不良副作用和错误导致它们无法满足您的需求。
在这种情况下,The common alternative是使用RTSP。它提供了一种可比较的会话格式has its own RFC,其与RTP结合时的数据包结构与您所需的协议非常相似(没有一些细节)。您可以在此处执行必要的修正以将RTP / RTSP转换为RTMP,但如上所述,此类工作目前不在您的应用程序的开发范围内。
因此,我们假设您要使用RTMP(invalidating this thread)并且the above-linked library无法满足您的需求。
例如,follow this tutorial可以使用Livu,Wowza和Adobe Flash Player进行录制和播放,与the Livu developer(s)讨论如何授权他们的客户端。或者,您可以使用this client library及其完整Android recorder example来构建您的客户。
总结:
祝您的申请顺利。我承认我对所有这些库的理解都不太全面,但在撰写本文时,这些似乎是这个领域的标准解决方案。
根据OP,走RTMP库集:
简而言之:需要做更多的工作。这些例子的其他答案和改进是这里需要的。
答案 1 :(得分:1)
如果您在Android设备上使用网络浏览器,则可以使用WebRTC进行视频捕获和服务器端录制,即使用Web Call Server 4
因此完整路径将是:
Android Chrome [WebRTC]> WCS4>记录
所以这里你不需要RTMP协议。
如果您使用的是独立的RTMP应用程序,则可以使用任何RTMP服务器进行视频录制。据我所知,Wowza支持H.264 + Speex录制。