我正在开发这个项目 @ https://net7mma.codeplex.com/
问题在于,RTSP Interleaved (RTP/AVP/TCP) 需要一个不固定的内容长度,这对于苹果提出的隧道方法并不好。
根据苹果公司的说法 @ https://web.archive.org/web/20130501053040/https://developer.apple.com/quicktime/icefloe/dispatch028.html
你可以忽略 Content-Length,但我建议使用 Multi-Part/Chunked
响应选项,并将每个 $
块作为分块发送回来,因为一些代理会观察 content-length 中的长度并关闭连接,在 Interleaved RTP 过程中这是不好的!
我对你有一个部分的解决方案。
我目前正在从服务器向Android客户端进行RTP流媒体开发项目中研究和开发。
通过这项工作,我为自己的库smpte2022lib做出了贡献。您可以在此处找到该库:http://sourceforge.net/projects/smpte-2022lib/。
借助这个库(Java实现目前是最好的),您可以解析来自专业流媒体设备、VLC RTP会话等的RTP组播流。
我已经成功地使用它测试了从捕获的SMPTE-2022 2D-FEC专业RTP流或使用VLC生成的简单流中获取的流。
不幸的是,由于该项目受版权保护,我无法在这里放置代码段,但我向您保证,您只需使用RtpPacket构造函数解析UDP流即可轻松使用它。
如果包是有效的RTP包(即字节),它们将被解码为此类包。
目前,我将对RtpPacket构造函数的调用包装到一个线程中,该线程实际上将解码后的有效载荷存储为媒体文件。然后,我将使用此文件作为参数调用VideoView。
祝好运 ;-)
亲切的问候,