0

我正在尝试编写一个程序,该程序将连接到 RTSP 视频源并使用 UDP 将视频数据重定向到另一个位置。我还保存了 RTSP 数据包,以便能够在稍后的时间重播视频流。现在我的程序可以连接到 RTSP 视频流并重定向和保存,但是当我尝试查看重定向的视频时,使用 VLC 我什么也得不到。

目前,该程序只是从它在其打开的 UDP 套接字中接收的 RTSP 视频数据包中去除数据报,并使用 boost asio 库使用此代码重新发送它们。

newVideoSocket->send_to(&dg.data[0], dg.data.size() ,Endpoint);

当我使用 Wireshark 查看流量时,我发现它实际上正在将数据发送到新地址,并且它被识别为 UDP 数据包,但是当我尝试使用 VLC 查看视频时,什么也没有发生。视频流是Mpeg4,视频编码为H.264,VLC可以播放。

我试图在多播和单播地址上以 UDP 和 RTP 的形式连接到重定向的流,但没有成功。在重新发送数据报之前,我是否需要添加或删除某些内容?还是我在 VLC 中查看它的方式有什么问题?谢谢您的帮助。

4

1 回答 1

0

要播放原始 UDP 流,VLC 需要有关流的信息(此信息通过 RTSP 在 DESCRIBE 和 SETUP 消息中传输)。尝试创建 sdp 文件,指定端口号、视频类型等(您需要从 serer 读取 DESCRIBE 响应),然后在 vlc 中打开它。

我已经设法让它工作,但是像这样使用 VLC 我遇到了同步和视频输出的问题(视频坏了)。

于 2013-09-30T09:30:42.877 回答