Как извлечь данные вектора движения без декодирования всего видео
Я хочу извлечь вектор движения из закодированного потока h264, не выполняя полного декодирования кадра.
Я использую библиотеку FFmpeg и знаю, что информацию можно извлечь с помощью av_frame_get_side_data. К сожалению, он выполняет полное декодирование кадра перед предоставлением AV_FRAME_DATA_MOTION_VECTORS.
Можно ли проанализировать h264, чтобы извлечь только векторы движения, игнорируя все остальные данные.
1 ответ
FFmpeg предоставляет пример файла extract_mvs.c, который необходимо скомпилировать для использования.
После компиляции используйте эту команду:
./extract_mvs input.mp4 > output.txt
При этом векторы движения извлекаются в текстовый файл.
Готовый инструмент — MV-Tractus .
Этот инструмент предоставит вам векторы движения в форме JSON для каждого кадра.
Более поздний инструмент — mv-extractor, описываемый как:
Этот инструмент извлекает кадры, векторы движения, типы кадров и временные метки из видео, закодированных в форматах H.264 и MPEG-4 Part 2.