Считать временный код за кадром с FFMPEG? - PullRequest
0 голосов
/ 03 ноября 2019

Я хочу прочитать временный код за кадр из видеофайла, используя 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";
}

1 Ответ

1 голос
/ 03 ноября 2019

Временной код, такой как в MOV / MP4, представляет собой просто один пакет с начальным временным кодом, выраженным в виде числа кадров с поправкой на скорость. Нет временного кода для каждого кадра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...