Лучший способ загрузить видео и получить изображения с помощью C ++ - PullRequest
1 голос
/ 16 сентября 2011

Я ищу быстрый способ загрузки видеофайла и создания изображений из них через определенные промежутки времени (каждую секунду, каждую минуту, каждый час и т. Д.).

Я пытался использовать DirectShow, но он просто работал слишком медленно для запуска видеофайла и перемещения в определенное место для получения данных и сохранения их в изображение.Даже если я отключил опорные часы.Пробовал OpenCV, но у него проблемы с открытием файла AVI, если я не знаю точную информацию о кодеке.Так что, если я знаю способ получить информацию о кодеке из OpenCV, я могу дать ему еще один шанс.Я пытался использовать FFMPEG, но у меня не так много контроля над ним, как хотелось бы.

Буду очень признателен за любой совет.Он разрабатывается для Windows-бокса, так как он должен быть размещен на Windows-боксе.

Ответы [ 2 ]

1 голос
/ 16 сентября 2011

Формат MPEG-4 не является внутренне кодированным форматом, поэтому вы не можете просто перейти к произвольному кадру и декодировать его самостоятельно, так как большинство кадров кодируют только отличия от одного или нескольких других кадров.Я подозреваю, что ваше декодирование идет медленно, потому что, когда вы попадаете на кадр, для которого несколько других зависимых кадров должны быть декодированы первыми.

Один из способов повысить производительность - это определить, какие кадры являются ключевыми кадрами (или иногда их также называют «синхронизировать»'точки) и ограничьте ваше декодирование этими кадрами, поскольку они могут быть декодированы самостоятельно.

Я не очень знаком с возможностями DirectShow, но я ожидаю, что у него есть некоторый API для отображения точек синхронизации.

Кроме того, я должен отметить, что QuickTime SDK для Windows, возможно, является еще одним хорошим вариантом для декодирования кадров из фильмов.Сначала вы должны проверить, что ваши фильмы AVI воспроизводятся правильно в QuickTime Player.А QT SDK действительно предоставляет точки синхронизации, см. Раздел Поиск интересных моментов в документации QT SDK.

0 голосов
/ 17 октября 2011

libavformat ffmpeg может работать для вас ...

...