检索 RTSP/RTP 时间戳

检索 RTSP/RTP 时间戳

这是我之前邮政。我目前能够使用 ffmpeg 和 opencv 获取 RTP 时间戳,但是,我实际上试图获取捕获帧的时间戳。我做了一些工作来尝试找到捕获帧的时间(代码是 python 格式)。

seconds_before_frame = cap.getRTPTimeStampSeconds()
fractionofseconds_before_frame = cap.getRTPTimeStampFraction()
ret, frame = cap.read()
seconds_after_frame = cap.getRTPTimeStampSeconds()
fractionofseconds_after_frame = cap.getRTPTimeStampFraction()

通过这样做,我发现捕获的时间偏差了0.02359296几秒钟,有时甚至0.2359296几秒,这比我预期的要多得多。

我看到了一种尝试使用 AVFormatContext 来获取帧的时间戳的方法,但我并不真正理解如何通过 priv_data 来获取它。

AVPacket* packet;
av_read_frame(formatCtx, packet);
RTSPState* rtspState = formatCtx->priv_data; 
RTPDemuxContext *rtpdemux = rtspState->rtsp_streams[packet->stream_index]->transport_priv;

RTSPState *state = _formatCtx->priv_data; 
RTSPStream *stream = state->rtsp_streams[0]; 
RTPDemuxContext *demux = stream->transport_priv; 
demux→timestamp

我想问一下我们如何从 C++ 端调用 AVFormatContext,是通过吗av_read_frame?是否可以使用 python 绑定或VideoCapture已经包装了 ffmpeg,因此无需使用av_read_frame而只需调用VideoCapture

相关内容