【问题标题】:UDP or RTP streaming solution for android适用于 Android 的 UDP 或 RTP 流媒体解决方案
【发布时间】:2012-05-09 22:28:26
【问题描述】:

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

谢谢

我开始编写一个隧道,将本地 UDP 流从端口 1234 传递到端口 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();

    }

有什么想法吗?

【问题讨论】:

  • 我将不胜感激任何代码/实现示例。再次感谢

标签: android udp video-streaming rtsp rtp


【解决方案1】:

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

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

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

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

也许您可以使用android.net.rtp 来捕捉您的流媒体视频。这方面的教程似乎很缺乏,所以如果你确实/确实得到了这个工作,我相信快速写一篇文章可以让大 G 搜索结果飞起来;更不用说帮助在“android udp rtp”搜索中出现的关于 stackoverflow 的 600 多个其他问题的海报。

来自博客圈:

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

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

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

【讨论】:

  • Shane 感谢您提供的链接,因为当时我没有解决方案,我通过 UDP 广播器购买了 MPEG2TS(非常便宜......)并编写了一个代理代码,从流中获取媒体,缓冲区它到一个文件,并允许从客户端“下载”或渐进式流式传输文件。这不是解决问题的教科书式解决方案,但我们已经启动并运行了它。我希望 google 将来会向我们展示一些爱,并增加对其他协议的支持。再次感谢!
  • 很高兴您成功了,感谢您分享您的经验!
  • 您能链接到您购买的设备吗?我对类似的东西感兴趣。
  • 我们使用了两种产品,一种来自 vboxcomm 用于处理卫星馈送,另一种来自 alcad 用于流式传输电影。
  • +1 @Omriko 感谢您告诉我们您的解决方案。
猜你喜欢
  • 1970-01-01
  • 2010-10-01
  • 1970-01-01
  • 2014-09-27
  • 2010-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多