1

我正在尝试在 matroska 容器中播放 vc1 编码的视频。

为此,我使用了 ffmpeg 的av_read_frame函数和一个 sertain 视频驱动程序,它要求AVPacket's 的数据以 PES 标头为前缀。在AVPacket唯一dts的领域是有效的,ptsAV_NOPTS_VALUE。我将dts值写入 PES 标头而不是pts.

视频驱动程序记录从 23976 到 24000 的恒定帧率变化,反之亦然。视频抽搐。虽然我将帧速率放入 PES 标头(值 23976 是 ffmpeg 的探测给出的),但显然,它正在根据当前数据包的 pts 发生变化。

我试图查看AVCodecParserContext's pts_dts_delta,但dts_ref_dts_delta它们AV_NOPTS_VALUEptsdtsAVPacket

请告知如何获得正确的 pts 值,或者如何解决它。

谢谢。

编辑: 我在他们使用的 ffplay.c 中看到了,av_frame_get_best_effort_timestamp但那是在通过 ffmpeg 的方式解码之后,我买不起。

4

0 回答 0