TransWikia.com

FFmpeg. Извлечение кадров по времени

Stack Overflow на русском Asked on December 16, 2021

Я никогда до сих пор не пользовался FFmpeg, и только начал изучать её. В туториале показано как извлекать один кадр за другим. Но меня итересует максимально быстрый способ извлечения нужного кадра по времени (очень желательно двунаправленно). Можно ли получить что-то типа AVFrameContext (я его выдумал), т.е. без выделения памяти для самого кадра до тех пор, пока не найдётся нужный? Т.е. нужно найти по миллисекундам, что время попадает между prev_frame и next_frame, и тогда достать cur_frame. Подскажите, пожалуйста, как это можно реализовать (с помощью каких функций, структур и т.п.)? Большое спасибо.

One Answer

Нашёл: FFmpeg Docs или Libav Docs

int av_seek_frame(AVFormatContext *s,
                  int stream_index,
                  int64_t timestamp,
                  int flags)

Seek to the keyframe at timestamp.

Ищет по времени [предшествующий] [ключевой] кадр внутри указанного индекса AVStream.

Флаги можно найти тут:

  1. AVSEEK_FLAG_BACKWARD
  2. AVSEEK_FLAG_BYTE
  3. AVSEEK_FLAG_ANY
  4. AVSEEK_FLAG_FRAME

Вот здесь объясняется как пользоваться флагами.

Answered by megorit on December 16, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP