[FFmpeg] Создание среды разработки FFmpeg на платформе Windows 10 ④ (библиотека разработки FFmpeg | Создайте проект для импорта и настройки библиотеки разработки FFmpeg | Скопируйте динамическую библиотеку DLL в каталог SysWOW64)
[FFmpeg] Создание среды разработки FFmpeg на платформе Windows 10 ④ (библиотека разработки FFmpeg | Создайте проект для импорта и настройки библиотеки разработки FFmpeg | Скопируйте динамическую библиотеку DLL в каталог SysWOW64)

В предыдущем блоге я установил VS2015, Qt 5.14.0, отладчик CDB и настроил компилятор MSVC и отладчик CDB в Qt;

Этот блог начинается с импорта скомпилированной библиотеки FFmpeg в среду разработки Qt на платформе Windows 10 и вызова библиотеки FFmpeg;

Библиотека FFmpeg, вызываемая в Windows, требует

  • Используйте MSVC для локальной компиляции на платформе Windows с архитектурой x86, и полученную динамическую или статическую библиотеку можно вызвать непосредственно здесь;
  • Используйте кросс-компилятор на платформе Linux/Mac для компиляции динамической библиотеки или статической библиотеки архитектуры x86 под платформу Windows, которую также можно вызвать здесь;
  • Динамические/статические библиотеки, скомпилированные локально на платформе Linux, не могут быть вызваны на платформе Windows;
  • Динамические/статические библиотеки, скомпилированные локально на платформе Mac, не могут быть вызваны на платформе Windows;

Среда разработки Qt 5.14.0 + компилятор MSVC 2015 + отладчик CDB, используемые в этом блоге, используются для разработки FFmpeg, импорта скомпилированной библиотеки функций FFmpeg и файлов заголовков, а также вызова FFmpeg в коде C/C++ в Qt Function;

Ресурсы привязки в блоге включают полную библиотеку функций FFmpeg, динамическую библиотеку, конфигурацию заголовочного файла/библиотеки функций проекта Qt и полный исходный код, который можно загрузить самостоятельно;

Скачать адрес : https://download.csdn.net/download/han1202012/89350567

1. Библиотека разработки FFmpeg

1. Компиляция библиотеки разработки FFmpeg

FFmpeg официально предоставляет только исходный код и исполняемые программы. Если вы хотите использовать библиотеку функций, вы должны скомпилировать ее самостоятельно, используя исходный код;

FFmpeg Исходный код Скачать адрес : https://ffmpeg.org//download.html

Вот скомпилированная библиотека функций + библиотека разработки заголовочных файлов, ffmpeg-4.2.1-win32-dev.zip,

Эту библиотеку разработки можно скомпилировать только в системах Windows с использованием 32-битного компилятора для создания 32-битных приложений.

Вы не можете использовать 64-битный компилятор для компиляции, а также не можете компилировать и генерировать 64-битные приложения;

2. Описание содержимого библиотеки разработки FFmpeg.

Загрузите библиотеку разработки и разархивируйте ее. Содержимое следующее:

Каталог примеров содержит примеры использования FFmpeg;

Каталог включения представляет собой серию заголовочных файлов,

Откройте каталог libavcodec, в нем находятся заголовочные файлы, относящиеся к кодированию и декодированию аудио и видео;

Каталог lib — это библиотека функций FFmpeg.

  • .lib суффикс из документ да Статическая библиотека ссылок Static Library ,Включать Понятнокомпилироватьхорошийизфункцияиданные, используется длясуществоватькомпилироватьэтап ссылки Воля Этифункцияиданные Связьприезжатьприложениесередина ;
  • .def суффикс документ да определениедокумент Definition File, Используется для определения динамически подключаемых библиотек. DLL серединаиз Экспортфункции данных ;
  • .dll.a документ да существовать Unix используется в окружающей среде Связать библиотеку динамической компоновки DLL формат документа ;

2. Создайте и настройте проект FFmpeg.

1. Скопируйте динамическую библиотеку dll в каталог C:\Windows\SysWOW64 — необходимая операция, особое внимание.

Если вы хотите нормально вызывать библиотеку FFmpeg, вам необходимо заранее скопировать динамическую библиотеку dll, связанную с FFmpeg, в каталог C:\Windows\SysWOW64;

Процесс копирования выглядит следующим образом;

Если вышеуказанные динамические библиотеки не скопированы, вам необходимо скопировать эти динамические библиотеки dll в корневой каталог программы сборки Qt. В противном случае функции FFmpeg не могут быть вызваны. При входе в командную строку вы увидите черный экран;

2. Создайте проект Qt — программа на языке C.

Откройте Qt, выберите опцию «Строка меню/Файл/Новый файл или проект»;

В типе проекта выберите проект типа «Простое приложение C» в разделе «Проект, отличный от Qt», а затем нажмите кнопку «Выбрать» в правом нижнем углу;

Установите имя проекта «FFmpegC» и создайте его в общем каталоге проекта Qt;

Соберите систему, установив qmake по умолчанию;

Выберите MSVC2015 и MinGW для сборки комплекта. Только эти два являются полными и 32-разрядными. Поскольку библиотека функций FFmpeg является 32-разрядной, для компиляции библиотеки функций FFmpeg можно использовать только 32-разрядный компилятор.

Для системы контроля версий проекта выберите значение по умолчанию «Нет»;

После завершения создания войдите на страницу проекта, нажмите кнопку «Компьютер» в левом нижнем углу и просмотрите настроенный «Комплект сборки». Комплект сборки по умолчанию — MSVC;

Нажмите кнопку «Выполнить» в левом нижнем углу.

Вы можете использовать компилятор MSVC для компиляции исходного кода и его запуска. Эффект от работы следующий:

Установите точку останова и нажмите кнопку отладки в левом нижнем углу.

вы можете использовать CDB для отладки приведенного выше исходного кода;

3. Настройте библиотеку разработки FFmpeg — проект на языке C.

Скопируйте библиотеку разработки ffmpeg-4.2.1-win32-dev в каталог проекта Qt,

Он содержит файлы заголовков и библиотеки функций;

Откройте файл конфигурации .pro, настройте файл заголовка и библиотеку функций и добавьте: в конце файла конфигурации:

Язык кода:javascript
копировать
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
}

Полный файл конфигурации выглядит следующим образом:

Язык кода:javascript
копировать
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* и распечатать строку;

Язык кода:javascript
копировать
#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:

  • Воля FFmpeg Связанный dll динамическая библиотека скопировать в C:\Windows\SysWOW64 Оглавление середина ;
  • Воля FFmpeg Связанный dll динамическая библиотека скопировать в Qt построить Оглавление середина ;

Если динамическая библиотека dll не скопирована, выполнение приведенного выше кода приведет к эффекту черного экрана;

Нажмите кнопку «Выполнить» в левом нижнем углу., Результаты выполнения следующие :

4. Создайте и настройте библиотеку разработки FFmpeg — проект C++.

Здесь мы объясняем только содержимое, которое отличается от языка C. Подробный процесс см. в процессе создания и настройки программы на языке C;

При создании нового проекта выберите проект «Простое приложение C++» в разделе «Проект без Qt»;

Установите имя FFmpegCPP,

Сборочный комплект Выбор комплекта аналогичен выбору программы на языке C;

Скопируйте библиотеку разработки ffmpeg-4.2.1-win32-dev в проект C++, созданный в Qt,

Настройте заголовочный файл FFmpeg и библиотеку функций в сценарии сборки .pro. Полная конфигурация выглядит следующим образом:

Язык кода:javascript
копировать
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;

  • Уведомление : C++ серединапредставлять C Языковой заголовок документа , Хочу отпуститьсуществовать extern “C”{} блок кода середина ;
Язык кода:javascript
копировать
#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;
}

Результаты выполнения следующие :

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода