LibAv:在 RTSP 流中设置自定义标头

LibAv:在 RTSP 流中设置自定义标头

我正在尝试播放从轴 M3004V摄像头。摄像头在内部 MicroSD 卡中连续录制视频。该视频收到一个recordingid我可以用来查询的。根据 Axis API 文档(在 Edge Storage 和 Video Streaming Vapix 文档中)中所述,我可以通过请求中的自定义标头指定播放的开始时间和结束时间。假设视频从2014-05-01T00:00:00Z...嗯...到现在一直在录制。

显然,如果我能够发送带有以下内容的 RTSP 请求:

rtps://camera_ip/axis-media/media.amp?<parameter>=<value>
Headerfield1: val1<CRLF>
Range: clock=2014-05-01T00:01:00Z-2014-05-01T00:01:30Z<CRLF>

00:00:01我将从到播放 1 分钟00:00:02

我正在尝试使用avplay如下方式设置自定义标题:

avplay -f rtsp -rtsp_transport http \
       -i "rtsp://user:[email protected]/axis-media/media.amp?recordingid=20140505_000000_5E99_00408CAABBCC"
       -headers "\nRange: clock=2014-05-01T00:01:00Z-2014-05-01T00:01:30Z\n" \
       -loglevel debug

但是当我尝试这样做时,出现Option headers not found错误:

[rtsp @ 0x7f4cb4005be0] video codec set to: h264
[NULL @ 0x7f4cb4004e20] RTP Packetization Mode: 1
[NULL @ 0x7f4cb4004e20] RTP Profile IDC: 4d Profile IOP: 40 Level: 29
[NULL @ 0x7f4cb4004e20] Extradata set to 0x7f4cb40014e0 (size: 29)!
[rtsp @ 0x7f4cb4005be0] hello state=0
Option headers not found.

然后avplay停了下来。

我在网上找不到任何例子,但我想说,将自定义标头传递给 RTSP 流的选项很久以前就添加到了 LibAv 中(至少,根据这次提交从 2011 开始)也许我没有正确传递参数?我尝试了上面几行的几种变体,例如删除部分-f rtsp,将 改为而不是-rtsp_transport,重新组织参数的顺序……但都不起作用。甚至没有产生不同的错误消息。tcphttp

有人知道如何使用 libav 将自定义标头传递给 RTSP 请求吗?

我使用的是 Lubuntu 14.04 (amd64),avplay版本是9.11-6:9.11-2ubuntu2

任何帮助都将不胜感激。提前谢谢您。

相关内容