我需要创建一个 Android 应用程序来显示实时电视节目。该应用程序应播放来自 DVB 网关的组播直播视频流,根据网关供应商的说法,它可以将流作为 UDP 或 RTP 流进行传输。
我在计算机上设置了 VLC 以通过 UDP 和 RTP 进行流式传输,并尝试使用不同的媒体播放器及所有的 FFMPEG 解决方案,但Android仅支持 HTTP/S 和 RTSP 实时流。我并不是视频专家,但据我理解,RTSP 是 RTP 的封装,是否可以将我的 RTP 流进行封装并流式传输(即使通过代理)?是否有人知道有效的 UDP 解决方案?
谢谢。
我开始编写一个隧道,从本地端口1234传递UDP流到端口8888上的TCP连接。我正在使用VLC测试,UDP载荷看起来正确,当我等待TCP监听器接受连接时,我能看到VLC初始化http连接,但仍然无法播放HTTP流, 我的代码:
谢谢。
我开始编写一个隧道,从本地端口1234传递UDP流到端口8888上的TCP连接。我正在使用VLC测试,UDP载荷看起来正确,当我等待TCP监听器接受连接时,我能看到VLC初始化http连接,但仍然无法播放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();
}
任何想法?