В предыдущем блоге я установил VS2015, Qt 5.14.0, отладчик CDB и настроил компилятор MSVC и отладчик CDB в Qt;
Этот блог начинается с импорта скомпилированной библиотеки FFmpeg в среду разработки Qt на платформе Windows 10 и вызова библиотеки FFmpeg;
Библиотека FFmpeg, вызываемая в Windows, требует
Среда разработки Qt 5.14.0 + компилятор MSVC 2015 + отладчик CDB, используемые в этом блоге, используются для разработки FFmpeg, импорта скомпилированной библиотеки функций FFmpeg и файлов заголовков, а также вызова FFmpeg в коде C/C++ в Qt Function;
Ресурсы привязки в блоге включают полную библиотеку функций FFmpeg, динамическую библиотеку, конфигурацию заголовочного файла/библиотеки функций проекта Qt и полный исходный код, который можно загрузить самостоятельно;
Скачать адрес : https://download.csdn.net/download/han1202012/89350567
FFmpeg официально предоставляет только исходный код и исполняемые программы. Если вы хотите использовать библиотеку функций, вы должны скомпилировать ее самостоятельно, используя исходный код;
FFmpeg Исходный код Скачать адрес : https://ffmpeg.org//download.html
Вот скомпилированная библиотека функций + библиотека разработки заголовочных файлов, ffmpeg-4.2.1-win32-dev.zip,
Эту библиотеку разработки можно скомпилировать только в системах Windows с использованием 32-битного компилятора для создания 32-битных приложений.
Вы не можете использовать 64-битный компилятор для компиляции, а также не можете компилировать и генерировать 64-битные приложения;
Загрузите библиотеку разработки и разархивируйте ее. Содержимое следующее:
Каталог примеров содержит примеры использования FFmpeg;
Каталог включения представляет собой серию заголовочных файлов,
Откройте каталог libavcodec, в нем находятся заголовочные файлы, относящиеся к кодированию и декодированию аудио и видео;
Каталог lib — это библиотека функций FFmpeg.
Если вы хотите нормально вызывать библиотеку FFmpeg, вам необходимо заранее скопировать динамическую библиотеку dll, связанную с FFmpeg, в каталог C:\Windows\SysWOW64;
Процесс копирования выглядит следующим образом;
Если вышеуказанные динамические библиотеки не скопированы, вам необходимо скопировать эти динамические библиотеки dll в корневой каталог программы сборки Qt. В противном случае функции FFmpeg не могут быть вызваны. При входе в командную строку вы увидите черный экран;
Откройте Qt, выберите опцию «Строка меню/Файл/Новый файл или проект»;
В типе проекта выберите проект типа «Простое приложение C» в разделе «Проект, отличный от Qt», а затем нажмите кнопку «Выбрать» в правом нижнем углу;
Установите имя проекта «FFmpegC» и создайте его в общем каталоге проекта Qt;
Соберите систему, установив qmake по умолчанию;
Выберите MSVC2015 и MinGW для сборки комплекта. Только эти два являются полными и 32-разрядными. Поскольку библиотека функций FFmpeg является 32-разрядной, для компиляции библиотеки функций FFmpeg можно использовать только 32-разрядный компилятор.
Для системы контроля версий проекта выберите значение по умолчанию «Нет»;
После завершения создания войдите на страницу проекта, нажмите кнопку «Компьютер» в левом нижнем углу и просмотрите настроенный «Комплект сборки». Комплект сборки по умолчанию — MSVC;
Нажмите кнопку «Выполнить» в левом нижнем углу.
Вы можете использовать компилятор MSVC для компиляции исходного кода и его запуска. Эффект от работы следующий:
Установите точку останова и нажмите кнопку отладки в левом нижнем углу.
вы можете использовать CDB для отладки приведенного выше исходного кода;
Скопируйте библиотеку разработки ffmpeg-4.2.1-win32-dev в каталог проекта Qt,
Он содержит файлы заголовков и библиотеки функций;
Откройте файл конфигурации .pro, настройте файл заголовка и библиотеку функций и добавьте: в конце файла конфигурации:
win32 {
INCLUDEPATH += $$PWD/ffmpeg-4.2.1-win32-dev/include
LIBS += $$PWD/ffmpeg-4.2.1-win32-dev/lib/avformat.lib \
$$PWD/ffmpeg-4.2.1-win32-dev/lib/avcodec.lib \
$$PWD/ffmpeg-4.2.1-win32-dev/lib/avdevice.lib \
$$PWD/ffmpeg-4.2.1-win32-dev/lib/avfilter.lib \
$$PWD/ffmpeg-4.2.1-win32-dev/lib/avutil.lib \
$$PWD/ffmpeg-4.2.1-win32-dev/lib/postproc.lib \
$$PWD/ffmpeg-4.2.1-win32-dev/lib/swresample.lib \
$$PWD/ffmpeg-4.2.1-win32-dev/lib/swscale.lib
}
Полный файл конфигурации выглядит следующим образом:
TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt
SOURCES += main.c
win32 {
INCLUDEPATH += $$PWD/ffmpeg-4.2.1-win32-dev/include
LIBS += $$PWD/ffmpeg-4.2.1-win32-dev/lib/avformat.lib \
$$PWD/ffmpeg-4.2.1-win32-dev/lib/avcodec.lib \
$$PWD/ffmpeg-4.2.1-win32-dev/lib/avdevice.lib \
$$PWD/ffmpeg-4.2.1-win32-dev/lib/avfilter.lib \
$$PWD/ffmpeg-4.2.1-win32-dev/lib/avutil.lib \
$$PWD/ffmpeg-4.2.1-win32-dev/lib/postproc.lib \
$$PWD/ffmpeg-4.2.1-win32-dev/lib/swresample.lib \
$$PWD/ffmpeg-4.2.1-win32-dev/lib/swscale.lib
}
В коде main.c введите файл заголовка «libavutil/avutil.h», затем вызовите функцию av_version_info() в файле заголовка, чтобы получить номер версии FFmpeg, получить результат строки char* и распечатать строку;
#include <stdio.h>
#include "libavutil/avutil.h"
int main()
{
printf("Hello World\n");
printf("FFmpeg version is %s\n", av_version_info());
return 0;
}
Скопируйте динамическую библиотеку FFmpeg:
Если динамическая библиотека dll не скопирована, выполнение приведенного выше кода приведет к эффекту черного экрана;
Нажмите кнопку «Выполнить» в левом нижнем углу., Результаты выполнения следующие :
Здесь мы объясняем только содержимое, которое отличается от языка C. Подробный процесс см. в процессе создания и настройки программы на языке C;
При создании нового проекта выберите проект «Простое приложение C++» в разделе «Проект без Qt»;
Установите имя FFmpegCPP,
Сборочный комплект Выбор комплекта аналогичен выбору программы на языке C;
Скопируйте библиотеку разработки ffmpeg-4.2.1-win32-dev в проект C++, созданный в Qt,
Настройте заголовочный файл FFmpeg и библиотеку функций в сценарии сборки .pro. Полная конфигурация выглядит следующим образом:
TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qt
SOURCES += \
main.cpp
win32 {
INCLUDEPATH += $$PWD/ffmpeg-4.2.1-win32-dev/include
LIBS += $$PWD/ffmpeg-4.2.1-win32-dev/lib/avformat.lib \
$$PWD/ffmpeg-4.2.1-win32-dev/lib/avcodec.lib \
$$PWD/ffmpeg-4.2.1-win32-dev/lib/avdevice.lib \
$$PWD/ffmpeg-4.2.1-win32-dev/lib/avfilter.lib \
$$PWD/ffmpeg-4.2.1-win32-dev/lib/avutil.lib \
$$PWD/ffmpeg-4.2.1-win32-dev/lib/postproc.lib \
$$PWD/ffmpeg-4.2.1-win32-dev/lib/swresample.lib \
$$PWD/ffmpeg-4.2.1-win32-dev/lib/swscale.lib
}
В код C++ включите заголовочный файл FFmpeg «libavutil/avutil.h» и вызовите функцию av_version_info(), чтобы получить номер версии FFmpeg;
#include <iostream>
using namespace std;
// существовать C++ кодсерединаимпортировать C Язык из документа Все таким образом импортировать
внешний "C"{
#include "libavutil/avutil.h"
}
int main()
{
printf("Hello World\n");
// C языковой стиль Консольная печать
printf("FFmpeg version is %s\n", av_version_info());
// C++ языковой стиль Консольная печать
cout << "FFmpeg version is " << av_version_info() << endl;
return 0;
}
Результаты выполнения следующие :