我正在尝试在matroska容器中播放vc1编码视频。
为此我正在使用ffmpeg的av_read_frame
函数和一个视频驱动程序,它需要AVPacket
的数据以PES标头作为前缀。
在AVPacket
仅dts
字段有效,pts
为AV_NOPTS_VALUE
。我将dts
值写入PES标头而不是pts
。
视频驱动程序将恒定帧速率从23976更改为24000,反之亦然。视频混蛋。虽然我将帧率放入PES标题(值23976是ffmpeg的探测给出的),但显然,它正在根据当前数据包的位置发生变化。
我尝试查看AVCodecParserContext
的{{1}}和pts_dts_delta
,但它们属于dts_ref_dts_delta
,其AV_NOPTS_VALUE
和pts
是与dts
请告知如何获得正确的pts值,或者如何解决它。
感谢。
修改
我在ffplay.c中看到他们使用AVPacket
但这是在用ffmpeg的方法解码之后,这是我买不起的。