正在RTP/RTP中检索时间戳

Retrieving timestamp in RTP/RTSP

本文关键字:RTP 时间戳 检索 正在      更新时间:2023-10-16

我使用libav/ffmpeg连接到IP摄像机。我确实需要从帧中提取绝对时间戳,而不是pts/dts。我怎么能有这个值?

使用Wireshark,我可以从相机(轴P1355)看到以下响应:

RTP信息:url=rtsp://xxx.dyndns.org:4378/axis-media/media.amp/trackID=1?fps=4&分辨率=1280x720&压缩=60;seq=32446;rtptime=3287715479\r\n

RTP数据包只包含相对时间戳。绝对时间戳被包括在作为RTCP的一部分的发送者报告(SR)中。

一些未完全实现的IP摄像机不发送SR数据包,那么你就倒霉了。我会给live555的testRTSPClient(http://www.live555.com/liveMedia/#testProgs)一次尝试,让您可以访问绝对时间戳(如果传输的话)。

"afterGettingFrame"函数会为您提供一个绝对的时间戳,使用RTPSource::hasBeenSynchronizedUsingRTCP,您可以对其进行验证。

最后我解决了这个问题。

我必须从上下文中捕获RTSPState,以便获得RTSPStream数组和视频数组,然后获得包含时间戳的RTPDemuxContext。