2014-02-21 5 views
0

Я хочу извлечь изображение (первый кадр) из видеофайла в qt. Я использовал приложение ffmpeg для извлечения фрейма, он дает исчерпывающий результат, который мне нужен, но ffmpeg - отдельное приложение, которое перегружает процесс. Поэтому я хочу сделать это как статическое связывание. Можно ли статически ссылаться на ffmpeg, есть ли какая-либо библиотека статистики для извлечения кадра из видео или есть ли какие-либо другие способы извлечь кадр из видео? Я не хочу использовать Qt phonon, потому что он физически открывает диалоговое окно фононов, а затем берет scrrenshot. Я хочу, чтобы процесс извлечения должен происходить в фоновом режиме.Как извлечь изображение из видеофайла в qt?

Заранее спасибо

ответ

3

У вас есть два варианта: либо через ffmpeg API, или через ffmpeg исполняемый файл. В основном

Исполняемые подход: быстрый и грязный, не так уж плохо, если все сделано правильно, но не очень гибкий

Вызов FFmpeg исполняемым с помощью QProcess, а затем прочитать обработанные данные с диска. Вам нужно построить параметры командной строки ffmpeg из ваших собственных параметров; уметь фиксировать результат (не удалось \ удалось) и.

API подход: долгосрочной перспективе, чистые, но требуют значительного объема работ на начало

  • ПОЛУЧИТЬ FFmpeg динамические librairies (avcodec, и т.д ..)
  • Следуйте учебник о том, как FFmpeg API используется , Dranger является самым известным, и есть updated version. Тщательное, кривая обучения впереди
  • включить, что в вашем Qt App (про конфигурации, обертка вокруг функциональности FFmpeg, и т.д ..)
  • Построить статическую версию библиотеки. Я оставляю это в прошлом, потому что может раздражать, особенно если вы на окнах (надеюсь, вы не)

Лично я рекомендую придерживаться исполняемому подхода, если вы не против того, в неделю, чтобы узнать ffmpeg API ,

2

OpenCV имеет встроенный videocapture API, который фактически обертывает avcodec, с которым легче работать - в случае, если вы не хотите возиться с avcodec.

EDIT: Data conversion.

Смежные вопросы