![LibAv:在 RTSP 流中设置自定义标头](https://linux22.com/image/1120643/LibAv%EF%BC%9A%E5%9C%A8%20RTSP%20%E6%B5%81%E4%B8%AD%E8%AE%BE%E7%BD%AE%E8%87%AA%E5%AE%9A%E4%B9%89%E6%A0%87%E5%A4%B4.png)
我正在尝试播放从轴 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
,重新组织参数的顺序……但都不起作用。甚至没有产生不同的错误消息。tcp
http
有人知道如何使用 libav 将自定义标头传递给 RTSP 请求吗?
我使用的是 Lubuntu 14.04 (amd64),avplay
版本是9.11-6:9.11-2ubuntu2
任何帮助都将不胜感激。提前谢谢您。