我需要创建一个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();
}
有什么想法吗 ?
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个其他问题的海报 .来自博客o-sphere:
http://burcudogan.com/2011/06/05/android-rtp-implementation-is-based-on-udp/
我会为WebRTC插上一个插件,因为它看起来很有前途:
http://www.html5rocks.com/en/tutorials/webrtc/basics/