我需要创建一个 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();
}
有什么想法吗 ?