avformat_write_header() 更改我的流的 time_base

问题描述 投票:0回答:0

我有一台高帧率相机,可以捕捉 >2000 fps。我的计划是将具有 µs 分辨率的实际捕获时间戳分配给帧,并在 matroska 文件中使用 H.264 进行编码。

所以我将

time_base
AVStream
AVCodecContext
设置为
{1, 1'000'000}
。但是在调用
avformat_write_header(avFormatContext, nullptr)
之后,我注意到流的
time_base
{1, 1'000}
。现在,由于我的帧率是这个分辨率的两倍,我得到相同的连续时间戳,并且当我从视频文件中提取它们时,我的一半帧丢失了。

有人知道为什么会这样吗?我能做些什么?最好以保留正确时间戳的方式。

c++ c ffmpeg frame-rate libavformat
© www.soinside.com 2019 - 2024. All rights reserved.