Настройка QT ffmpeg - PullRequest
       5

Настройка QT ffmpeg

5 голосов
/ 30 мая 2011

Я не могу использовать ffmpeg в QT.

Мои шаги:

-1. скомпилируйте ffmpeg как обычно

-2. добавить путь lib / include в QT .pro

LIBS += -L/home/kim/ffmpeg/lib -lavcodec -lavformat
INCLUDEPATH += /home/kim/ffmpeg/include

-3. в коде

extern "C" { 
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
}

и просто вызовите функцию с именем av_register_all ();

тогда я получил следующие грубые проблемы <ссылка на многие функции не определена>

in function `rl2_read_packet`: undefined reference to `av_free_packet`
in function `av_register_all`: ....

Я ищу решение проблемы, но у меня не работает.

Есть другое решение? Спасибо.

Ответы [ 2 ]

10 голосов
/ 21 декабря 2015

Это старый пост, и он почти решен. Кстати, я столкнулся с проблемой, и у меня было много времени, чтобы бороться с

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
  • Настройка project.pro

Рекомендуется собрать 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;
}
5 голосов
/ 24 июля 2011

У меня были те же проблемы, это работало с использованием следующего трюка.

В исходном коде cpp:

#define __STDC_CONSTANT_MACROS

extern "C" {
#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
}

А в вашем .pro файле:

LIBS += -LC:/Users/tom/bla/ffmpeg/lib/ -lavcodec -lavformat -lavutil

Я думаю, что в вашем случае вам нужен параметр -lavutil lib.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...