安卓的UDP或RTP流媒体解决方案

12
我需要创建一个 Android 应用程序来显示实时电视节目。该应用程序应播放来自 DVB 网关的组播直播视频流,根据网关供应商的说法,它可以将流作为 UDP 或 RTP 流进行传输。 我在计算机上设置了 VLC 以通过 UDP 和 RTP 进行流式传输,并尝试使用不同的媒体播放器及所有的 FFMPEG 解决方案,但Android仅支持 HTTP/S 和 RTSP 实时流。我并不是视频专家,但据我理解,RTSP 是 RTP 的封装,是否可以将我的 RTP 流进行封装并流式传输(即使通过代理)?是否有人知道有效的 UDP 解决方案?
谢谢。
我开始编写一个隧道,从本地端口1234传递UDP流到端口8888上的TCP连接。我正在使用VLC测试,UDP载荷看起来正确,当我等待TCP监听器接受连接时,我能看到VLC初始化http连接,但仍然无法播放HTTP流, 我的代码:
public void Bridge()
    {
        //endpoints
        IPEndPoint myRemoteEndpoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1234);

        //communications objects
        UdpClient myUdpClient = new UdpClient(myRemoteEndpoint);
        TcpListener myTcpListener = new TcpListener(IPAddress.Any, 8888);

        //buffer
        byte[] buffer = new byte[2048];

        //start tcp listener
        myTcpListener.Start();
        Socket tcpAcceptedSocket = myTcpListener.AcceptSocket();            

        while (true)
        {
            try
            {
                //get data from UDP client
                buffer = myUdpClient.Receive(ref myRemoteEndpoint);

                //send bytes received from UDP over TCP
                tcpAcceptedSocket.Send(buffer);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }

        //close sockets
        myUdpClient.Close();
        myTcpListener.Stop();

    }
任何想法?

我会非常感激任何代码/实现样例。再次感谢。 - Omriko
1个回答

2

希望您已经解决了这个问题?

我的第一个想法是“如何退出那个while (true)循环?” 哈哈

RTP在Android SDK的API级别12中添加:

http://developer.android.com/reference/android/net/rtp/package-summary.html

也许您可以使用android.net.rtp来捕获您的流媒体视频。 在这个领域似乎缺乏重要的教程,因此如果您成功实现了这一点,我相信一个快速的写作可以飞上Google搜索结果; 更不用说帮助其他600多个stackoverflow问题的发布者,这些问题在“android udp rtp”搜索中出现。

来自博客圈:

http://burcudogan.com/2011/06/05/android-rtp-implementation-is-based-on-udp/

我会为WebRTC提供插件,因为它看起来很有前途:

http://www.html5rocks.com/en/tutorials/webrtc/basics/


1
Shane,感谢你提供这些链接。因为我在购买MPEG2TS over UDP广播器时找不到解决方案(价格显著更便宜...),所以编写了代理代码,从流中获取媒体,将其缓冲到文件中,并允许客户端进行“下载”或渐进式流传输。虽然这不是问题的标准解决方案,但我们已经使其正常运行。希望Google未来会增加对其他协议的支持。再次感谢! - Omriko
很高兴你已经解决了问题,感谢你分享你的经验! - CodeShane
你能提供一下你购买的设备链接吗?我对类似的东西很感兴趣。 - egfconnor
1
我们使用了两个产品,一个来自vboxcomm用于处理卫星信号,另一个来自alcad用于流媒体电影。 - Omriko
+1 @Omriko,感谢您分享解决方案。 - CodeShane

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接