>上下文
- 大多数RTP流(来自例如IP摄像机)需要来自SDP的一些信息才能对其进行解码。
- SDP通常是及时获取的,通常来自RTSP URL,但其他方式也是可能的(例如HTTP)。
具体案例
我们遇到的情况是,RTP 流(来自摄像机,无论是否有人收听,UDP 始终发送)将使用 VLC 播放,但为 VLC 提供 RTSP URL 以及时获取 SDP 不是一种选择。
有一个 RTSP 服务,但我们需要提前查询它并转储生成的 SDP 文件以稍后将其提供给 VLC。无论如何,实时执行 RTSP 查询是无用的,因为流始终存在。
如何使用VLC做到这一点?
发布前搜索
当然,我一直在搜索Google,videolan wiki和StackExchange。
信息很难找到,因为当人们谈论流媒体、RTSP、RTP 时,他们通常使用 VLC 来生成 RTP 流,或者输出 VLC 生成的 SDP,因为它进行编码等。这里的情况并非如此。要转储的 SDP 来自具有单个 RTSP 查询的服务器。
问题
基本上,我正在寻找一个命令行,例如:
vlc --sout...something...rtsp://sourceIP:Port/...something...out...myfile.sdp
那将在myfile.sdp
抛弃社民党.
然后,稍后,运行 vlc 时myfile.sdp
作为参数将播放流。
我们没有找到单独使用 VLC 的解决方案(我什至看了一下 VLC 源代码)。 所以我们使用了某种"蛮力"解决方案,但嘿,它有效。
我们在配置时所做的是要求VLC播放一次流,而Wireshark使用过滤器捕获数据包 rtsp and sdp
。出现一个数据包,其中包含我们想要的 SDP 数据。我们选择它并使用"将所选字节提取到..."并保存到名称以 .sdp
结尾的文件。
这给了我们一个包含我们想要的SDP信息的文件。工作完成。