Ответ 1
С помощью FFmpeg вы можете:
- используйте предварительно созданные файлы .lib/.dll и ваш двоичный файл, созданный с помощью Visual Studio, будут зависеть от файлов av *.dll.
- скомпилировать FFmpeg из исходного кода в статические библиотеки с использованием компилятора, отличного от Microsoft, а затем связать его с проектом Visual Studio (в этом случае, если учесть лицензию LGPL/GPL)
Вы создали свой проект согласно пункту 1 выше. Вы должны использовать и перераспределять файлы, зависящие от av *.dll, с вашим двоичным файлом, чтобы он работал.
"Статический" на Zeranoe означает, что библиотеки статически связаны с двоичными файлами, такими как ffmpeg.exe
. Не путайте это со статическими библиотеками .lib
, которые ссылаются на ваш двоичный файл. Зерано не дает такого.
В Zeranoe вы найдете такие архивы:
- "Общий" ffmpeg-20120726- git -236ecc3-win32-shared.7z:
-
bin/avcodec-54.dll
-
bin/avutil-51.dll
- и т.д.
-
- "Dev" ffmpeg-20120726- git -236ecc3-win32-dev.7z:
-
lib/avcodec.lib
-
lib/avutil.lib
-
"Общий" архив имеет FFmpeg, построенный с динамической ссылкой на библиотеки DLL. В архиве "Dev" есть файлы lib, которые вы можете использовать в своем проекте для ссылки на них так же, как ffmpeg.exe в общем архиве.
Итак, ваш проект Visual Studio может быть таким же простым, как это (просмотреть полный источник здесь):
extern "C"
{
// NOTE: Additional directory ..\zeranoe.com\dev\include gets to the files
#include "libavcodec\avcodec.h"
}
// NOTE: Additional directory ..\zeranoe.com\dev\lib gets to the files
#pragma comment(lib, "avcodec.lib")
// NOTE: Be sure to copy DLL files from ..\zeranoe.com\shared\bin to the directory of
// the FFmpegApp.exe binary
int _tmain(int argc, _TCHAR* argv[])
{
_tprintf(_T("Trying avcodec_register_all... "));
avcodec_register_all();
_tprintf(_T("Done.\n"));
return 0;
}
Вы извлечете архив "Dev" в подкаталог dev
проекта Visual Studio, и вы добавите dev\include
в дополнительный путь include. Этого будет достаточно для создания двоичного файла, и он будет зависеть от av*.dll
:
Это когда вы извлекаете "Общий" архив и копируете DLL из его bin
в каталог вашего двоичного файла. И ваше приложение будет работать оттуда:
C:\FFmpegApp\Release>FFmpegApp.exe
Trying avcodec_register_all... Done.
20 января 2016 г. UPDATE. Проект в репозитории обновлен до Visual Studio 2013 (более старый код VS 2010) и проверен на текущие сборки Zeranoe. Образец и инструкции остаются в хорошем состоянии.
Обратите внимание, что Win32
в Visual Studio предполагает, что вы используете 32-битные файлы из Zeranoe. Чтобы построить 64-битную версию, загрузите соответствующие файлы и настройте проект Visual С++, соответственно, для сборки x64
(или, лучше всего, загрузите оба варианта, настройте обе конфигурации и настройте include/lib paths соответственно). Невыполнение битности приведет к ошибке, упомянутой в комментариях ниже.