2015-07-22 2 views
5

Я ищу инструмент/код с открытым исходным кодом или некоторое руководство для извлечения векторов движения (MV) кодированной последовательности бит H.264. Я уже знал, что векторы движения могут быть визуализированы с помощью FFmpeg с помощью следующей команды:Извлечение векторов движения из потока бит H.264

ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb

Однако, я хочу, чтобы создать файл журнала, где MVs Р и В кадров перечислены покадрово. Я проверил структуру MVs из libavutil/motion_vector.h, но я не смог найти пример, который показывает, как они извлекаются и укладываются поверх исходной последовательности с помощью ffplay. Я думал, что, если я смогу это выяснить, я мог бы перестроить код для извлечения MV в текстовый файл.

Я также попытался код, указанный в this answer, но это не похоже на работу с новыми версиями FFmpeg:

Я был бы признателен за любые примеры кодов или намеков.

+0

Запрашивать учебные пособия, инструменты и библиотеки не по теме для переполнения стека (см. [Справка]). Также обратите внимание, что [ffplay исходный код] (https://www.ffmpeg.org/doxygen/trunk/ffplay_8c-source.html) лицензируется по LGPL и доступен. –

+2

Он также просит ввести код/​​руководство, поэтому более полезным было бы обеспечение некоторых образцов кода. – Luca

ответ

8

Исходный код для видео-фильтра codecview: here, это то, что вы ищете?

[править] Извините, я думаю, это не очень полезно. Функция, которую вы ищете, это filter_frame(), в которой показано, как читать AVMotionVectors (как побочные данные) из данного AVFrame, это код, используемый в примере вашей командной строки. В этом примере вызывается draw_arrow(), но вы можете просто заменить его вызовом printf() или некоторой настраиваемой функцией, которая регистрирует информацию MV в выбранном вами лог-файле.

+0

Привет, не могли бы вы дать более подробную информацию о том, как мы можем использовать AVMotionVectors в MATLAB. Ваш ответ дает некоторый намек, но я заблокирован для использования. Как это получить в Matlab. Об этом очень мало информации в Интернете. –

+0

Я задал новый вопрос с более подробной информацией, я не знаю, как вы хотите вводить данные в Matlab или то, что вы заблокировали точно. –