当前位置: 首页 > 知识库问答 >
问题:

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

燕英奕
2023-03-14

我需要创建一个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流,我的代码:

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();

    }

有什么想法吗?

共有1个答案

高夜洛
2023-03-14

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

我的第一个想法是“如何在(true)循环时退出该循环?”英雄联盟

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

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

也许你可以使用android。网rtp可捕获流媒体视频。这方面似乎非常缺乏教程,所以如果你确实做到了,我相信快速的写一篇文章可以迅速获得大G搜索结果;更不用说帮助“android udp rtp”搜索中出现的其他600个stackoverflow问题的海报了。

从blog-o-sphere:

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

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

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

 类似资料:
  • 问题内容: 我正在构建一个Android应用,该应用将流传输来自拉丁美洲国家的几个广播电台,我知道可以在android中播放10个广播电台,我从中获得了网址,并使用本教程实际使它们工作(链接已删除,因为它已经死了),但是我遇到的问题是它播放了几秒钟,然后停止播放并继续加载,但没有重新启动流式传输,我的问题是: 如果有人使用过本教程,则可以向我解释如何使它持续不断地播放而不会停止。 有没有更简单的方

  • 我通过spark streaming应用了一个实时异常检测系统。在每个流媒体时间间隔内,如果数据点异常,AWS SNS会发送电子邮件订阅帐户。但是AWS SNS java sdk不喜欢在spark流媒体中工作。下面是错误消息 ERROR StreamingContext:启动上下文时出错,将其标记为停止的java。伊奥。NotSerializableException:已启用数据流检查点,但数据流

  • 如您所见,存在版本冲突,但gradle似乎认识到了冲突,并应用了默认的“最新版本”策略,这正是我想要的。 但是,当尝试运行(手动或通过Android Studio)时,我会得到 对类似问题的一些回答建议ing不需要的jar,但我遇到了许多类似的冲突,而且有点失控。

  • 我在使用udp\U多播传输方法时遇到问题,该方法使用ffmpeg或ffplay作为网络摄像头的客户端。 TCP传输工作原理: UDP运输工程: 多播传输不工作: 选择udp_multicast时的错误消息如下: 使用-v调试运行:观察UDP多播信息是否出现在SDP中,即使为此运行选择的传输是单播的。单播或多播的SDP内容不变。 这是使用udp_multicast时相同的调试部分。SDP与前面提到的

  • 我想直播Android麦克风,可以使用VLC播放器等听到。 Playstore主要提供IP摄像头应用,但这些应用是通过内部网络实现的。我想在互联网上播放流媒体。 可能吗? 我尝试了以下代码片段,但目前不起作用: 在VLC播放器前,我试着听(媒体)- 还有别的办法吗?

  • 这是因为检查点只存储了其中一个数据流的偏移量吗?浏览Spark结构流文档,似乎可以在Spark 2.2或>中进行流源的联接/联合