Did*_*era 1 c++ ffmpeg rtp rtsp libav
我正在使用libav / ffmpeg连接到IP摄像机。我确实需要从帧中提取绝对时间戳,而不是pts / dts。我怎么有这个价值?
使用Wireshark,我可以从相机(轴P1355)看到以下响应:
RTP信息:url = rtsp://xxx.dyndns.org:4378 / axis-media / media.amp / trackID = 1?fps = 4&resolution = 1280x720&compression = 60; seq = 32446; rtptime = 3287715479 \ r \ n
RTP 数据包仅包含相对时间戳。绝对时间戳包含在作为 RTCP 一部分的发送方报告 (SR) 中。
一些不完整实现的 IP 摄像机不发送 SR 数据包 - 那么你就不走运了。我会给 live555 的 testRTSPClient ( http://www.live555.com/liveMedia/#testProgs ) 一个尝试,让你访问绝对时间戳 - 如果传输。
“afterGettingFrame”函数为您提供绝对时间戳,您可以使用 RTPSource::hasBeenSynchronizedUsingRTCP 验证它。
最后我解决了这个问题。
为了获取RTSPStream数组并获取视频,我不得不从上下文中捕获RTSPState,然后获取包含时间戳的RTPDemuxContext。
| 归档时间: |
|
| 查看次数: |
4135 次 |
| 最近记录: |