适用于Android的UDP或RTP流媒体解决方案

Omr*_*iko 12 android udp rtp rtsp video-streaming

我需要创建一个Android应用程序来显示直播电视节目.应用程序应该播放来自DVB网关的多播的实时视频流,根据网关供应商,它可以流出UDP或RTP.我在我的计算机上安装了vlc以流出UDP和RTP,并试图让Android播放器显示它们.过了一会儿,我发现android只支持HTTP/S和RTSP直播流.我尝试了所有的FFMPEG解决方案和不同的媒体播放器,但还没有成功.我不是视频专家,但根据我的理解,RTSP是RTP的封装,我的RTP提要是否可以包装和流式传输(甚至通过代理)?有谁知道一个有效的UDP解决方案?

谢谢

我开始编写一个隧道,将端口1234的本地UDP流传递到端口8888上的TCP连接.我正在使用VLC进行测试,UDP负载看起来是正确的,我能够在等待时看到VLC初始化http连接为TCP侦听器接受连接.但仍然VLC不会播放生成的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();

    }
Run Code Online (Sandbox Code Playgroud)

有什么想法吗 ?

Cod*_*ane 2

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

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

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

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

也许您可以用来android.net.rtp捕捉流媒体视频。这个领域似乎严重缺乏教程,所以如果你确实做到了这一点,我相信快速写一篇文章可以让大G搜索结果飞起来;更不用说帮助发布者解决 stackoverflow 上“android udp rtp”搜索中出现的 600 多个其他问题。

来自博客圈:

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

我会添加一个 WebRTC 插件,因为它看起来很有前途:

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