使用FFMPEG读取每帧时间码吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用FFMPEG读取每帧时间码吗?相关的知识,希望对你有一定的参考价值。
我想使用libav(FFMPEG)从视频文件中读取每帧时间码。我首先开始研究FFProbe。使用此代码作为我的代码的起点,我可以进入其中包含时间代码的AVStream
。从那里,我可以使用字典查看流的元数据。
int show_stream(WriterContext *w, AVFormatContext *fmt_ctx, int stream_idx, InputStream *ist, int in_program)
AVStream *stream = ist->st;
...
auto tcr = av_dict_get(stream->metadata, "timecode", NULL, 0);
std::cerr << "Timecode: " << tcr->value << ", Total Frames: << stream->nb_frames << "\n";
时间码是嵌入到视频中的正确时间码。 nb_frames
正确是我拥有的视频帧的总数。我无法获得的是每帧时间码。如果不需要,我不想计算它,我想确切地知道每个帧上标记的内容。这可能吗?
// Pseudocode for what I want
for(const auto& f : allOfMyFrames)
std::cerr << "Frame number " << f.number << ", Timecode: " << f.timecode << "\n";
答案
时间码,例如MOV / MP4中的时间码,只是一个单个数据包,其起始时间码表示为速率调整后的帧数。没有每帧的时间码。
以上是关于使用FFMPEG读取每帧时间码吗?的主要内容,如果未能解决你的问题,请参考以下文章