【问题标题】:Save and re-stream RSTP video as straight UDP保存和重新流式传输 RTSP 视频是直接 UDP
【发布时间】:2013-10-02 20:12:44
【问题描述】:

我正在尝试编写一个程序,该程序将连接到 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 中查看它的方式有什么问题?感谢您的帮助。

【问题讨论】:

  • 你确定 VLC 能够播放“原始”UDP 数据包吗?通常需要一些更高级别的协议,例如 RTP。

标签: ffmpeg udp boost-asio rtsp


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-24
    • 2011-03-12
    • 1970-01-01
    • 2010-10-28
    • 1970-01-01
    • 2014-11-22
    • 2015-04-27
    • 1970-01-01
    相关资源
    最近更新 更多