繁体   English   中英

使用 FFMPEG 读取每帧时间码?

[英]Read Per-Frame Timecode with 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 中的时间码)只是一个数据包,其起始时间码表示为速率调整的帧数。 没有每帧时间码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM