как я могу использовать видео ввод / вывод openCV FFMPEG вместо DirectShow в Windows? - PullRequest
0 голосов
/ 22 февраля 2012

Итак, я пытаюсь написать видео с использованием openCV videoWriter как таковое:

writer=cv.CreateVideoWriter(path+"test_output.avi",-1,fps,(W,H),1)

Таким образом, вместо предоставления FOURCC я поставил -1, чтобы посмотреть, какие кодеки у меня есть. Результатом были Microsoft RLE, Microsoft Video 1, Intel YUV и Uncompressed.

Причина в том, что при настройке openCV с использованием CMAKE для Visual Studio 10 x64, это то, что я имею в видео ввод / вывод: Видео ввод / вывод: DirectShow

Есть ли способ переключить это на FFMPEG? Я знаю, что df ffmpeg присутствует в \ 3dparty \ ffmpeg. Я искал флаги Cmake FFMPEG, но ничего не нашел. Странная вещь находится в CmakeLists.txt в корне opencv в разделе видео:

if(UNIX AND NOT APPLE)
<FFMPEG stuff>
elseif(WIN32)
    status("  Video I/O:"        HAVE_VIDEOINPUT     THEN DirectShow ELSE NO)
endif()

Так что мне кажется, что opencv автоматически переключается на DirectShow и не дает выбора использования FFMpeg. Или, скорее, можно обновить Driectshow для поддержки других форматов, таких как Divx или h264? Есть идеи?

Ответы [ 2 ]

7 голосов
/ 03 мая 2012

Ответ, который вы ищете, здесь, и он работает для 32-битных и 64-битных конфигураций. Я использовал эту сборку FFMPEG. http://ffmpeg.zeranoe.com/builds/win64/dev/ffmpeg-git-1aeb88b-win64-dev.7z

1) Загрузить OpenCV 2.3

2) Откройте корневой файл CMakeLists.txt и вставьте набор строк (HAVE_FFMPEG 1)

3) Скачать http://ffmpeg.zeranoe.com/builds/win64/dev/ffmpeg-git-1aeb88b-win64-dev.7z (или 32-битная сборка, если вам это нужно)

4) Отредактируйте файл avformat.h, найденный в ffmpeg, включив dir с помощью #define INT64_C

5) Отредактируйте файл cap_ffmpeg_impl.hpp из проекта highgui с помощью #define snprintf _snprintf

6) в свойствах вашего проекта highgui в C / C ++> Дополнительные каталоги включения добавьте путь к каталогу включения FFMPEG, который вы только что скачали

7) На той же странице свойств в Linker> General> Additional Library Dependencies добавьте путь к каталогу lib FFMPEG, который вы только что скачали

8) На той же странице свойств в разделе Линкер> Вход> Дополнительные зависимости добавьте ВСЕ имена библиотек ffmpeg, найденных в lib (avformat.lib, avscale.lib, avcore.lib и т. Д.)

9) построить проект highgui

10) Добавьте путь к файлам .dll, поставляемым с FFMPEG, в переменную среды System Path.

Вот и все! 10 простых шагов;)

1 голос
/ 02 апреля 2012

Если вы все еще не можете скомпилировать OpenCV с поддержкой FFMpeg, библиотека, на которую ссылается этот блог, предоставляет довольно хорошую отправную точку для создания совместимой с Windows оболочки FFMpeg: Работа OpenCV-2.3 с библиотекой ffmpegи Microsoft Visual Studio 2010

...