Это старый пост, и он почти решен. Кстати, я столкнулся с проблемой, и у меня было много времени, чтобы бороться с
undefined reference to av_register_all
Я использую Qt Creator 5.3.2, и это мой файл MYPROJECT.pro
MYPROJECT.pro
QT += core
QT -= gui
TARGET = MYPROJECT
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
QMAKE_CXXFLAGS += -D__STDC_CONSTANT_MACROS
LIBS += -LC:\ffmpeg-20151219-git-2dba040-win32-dev\lib
LIBS += -lavcodec -lavformat -lavutil -lswscale
INCLUDEPATH +=C:\ffmpeg-20151219-git-2dba040-win32-dev\include
Рекомендуется собрать ffmpeg с нуля, но если вы работаете в Windows и не хотите скомпилировать этот шедевр, тогда поздравляю! ты похож на меня! Перейдите на предварительно встроенный zereanoe и загрузите как последние общие версии, так и dev dev-32. Извлеките последние два пакета в месте, где в пути нет пробелов, т.е. мой находится в: C: \ ffmpeg-20151219-git-2dba040-win32-dev
Я рекомендую не переименовывать основную папку, потому что она очень информативна. Установите папку include [PATH TO ffmpg-YYYYMMDD-git-win32-dev] / include в область поиска вашего проекта с помощью следующей строки кода:
INCLUDEPATH +=C:\ffmpeg-20151219-git-2dba040-win32-dev\include
Вы также должны использовать библиотеки в [PATH TO ffmpeg-YYYYMMDD-git-win32-dev] / lib для вашего проекта, как показано ниже:
LIBS += -LC:\ffmpeg-20151219-git-2dba040-win32-dev\lib
LIBS += -lavcodec -lavformat -lavutil
Вы можете вызывать библиотеки, отличные от lavcodec, lavformat и lavutil. В вашем файле cpp вы должны заключить заголовки, соответствующие ffmpeg, во внешний блок "C".
- DLL должны быть добавлены
Последний шаг - добавить все dll-файлы в общую версию ffmpeg, которую вы недавно скачали.
Скопируйте * .dll файлы в
[PATH TO ffmpeg-YYYYMMDD-git-2dba040-win32-shared]/bin
и вставьте их там, где существует ваш исполняемый файл. Например, мой проект находится в C: / QtProjects / MYPROJECT, а мои двоичные файлы расположены в:
C:/QtProjects/build-MYPROJECT-Desktop_Qt_5_3_MinGW_32bit-Debug
Теперь скопируйте все библиотеки в папку отладки или выпуска вашего проекта.
- Мой main.cpp
Это мой main.cpp:
main.cpp
#include <iostream>
extern "C" {
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libswscale/swscale.h>
}
using namespace std;
int main(int argc, char *argv[])
{
cout<<"I have included FFMPEG in my project"<<endl;
av_register_all();
cout<<"If everything goes well you will see ME"<<endl;
return 0;
}