android的UDP或RTP流媒体解决方案

android的UDP或RTP流媒体解决方案,android,udp,video-streaming,rtsp,rtp,Android,Udp,Video Streaming,Rtsp,Rtp,我需要创建一个android应用程序来显示一个实时电视源。 根据网关供应商的说法,该应用程序应该可以播放来自DVB网关多播的实时视频流,它可以流式输出UDP或RTP。 我在我的电脑上设置了vlc来输出UDP和RTP,并在试图让android播放器显示它们时弄断了手指。过了一会儿,我发现android只支持HTTP/S和RTSP实时流。我尝试了所有的FFMPEG解决方案和不同的媒体播放器,但都没有成功。我不是视频专家,但据我所知,RTSP是RTP的封装,我的RTP提要可以被包装和流式传输(甚至通过

我需要创建一个android应用程序来显示一个实时电视源。 根据网关供应商的说法,该应用程序应该可以播放来自DVB网关多播的实时视频流,它可以流式输出UDP或RTP。 我在我的电脑上设置了vlc来输出UDP和RTP,并在试图让android播放器显示它们时弄断了手指。过了一会儿,我发现android只支持HTTP/S和RTSP实时流。我尝试了所有的FFMPEG解决方案和不同的媒体播放器,但都没有成功。我不是视频专家,但据我所知,RTSP是RTP的封装,我的RTP提要可以被包装和流式传输(甚至通过代理)?有人知道一个工作的UDP解决方案吗

谢谢

我开始编写一个隧道,将本地UDP流从端口1234传递到端口8888上的TCP连接。我正在用VLC进行测试,UDP负载看起来是正确的,当我等待TCP侦听器接受连接时,我能够看到VLC初始化http连接。但VLC仍然不会播放生成的HTTP流, 我的代码:

有什么想法吗?

希望你已经解决了这个问题

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

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

也许你可以使用android.net.rtp来捕捉你的流媒体视频。这方面的教程似乎非常缺乏,所以如果你真的做了/真的做了这件事,我相信快速的写一篇文章会让大G搜索结果飞起来;更不用说帮助解决“android udp rtp”搜索中出现的关于stackoverflow的600多个其他问题

从blog-o-sphere:

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


如果有任何代码/实现示例,我将不胜感激。感谢againShane感谢链接,因为我在购买MPEG2TS over UDP广播时没有解决方案(非常便宜…),我编写了一个代理代码,从流中提取媒体,将其缓冲到文件中,并允许从客户端“下载”或渐进流式传输文件。这不是解决这个问题的教科书式解决方案,但我们已经启动并运行了它。我希望谷歌将来会给我们一些爱,并为附加协议增加支持。再次感谢!很高兴你让它工作了,谢谢你讲述你的经历!你能链接到你买的设备吗?我对类似的东西很感兴趣。我们使用了两种产品,一种来自vboxcomm,用于处理卫星饲料,另一种来自alcad,用于流媒体电影。+1@Omriko感谢您告诉我们您的解决方案。
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();

    }