ffmpeg开发环境搭建.md
windows
下载ffmpeg开发包
这里提供一个下载链接可以从ffmpeg官网找到 ffmpeg-n7.1-latest-win64-lgpl-shared-7.1.zip
cmake配置
cmake
cmake_minimum_required(VERSION 3.10)
#项目名称
project(ffmpeg_learn LANGUAGES C CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_C_STANDARD 99)
#设置ffmpeg开发包目录
set(FFMPEG_DEV_ROOT "D:/Apps/ffmpeg")
#MSVC编译文件编译
if (MSVC)
add_compile_options(/utf-8)
add_compile_definitions(__STDC_CONSTANT_MACROS)
endif ()
#查找所有DLL
file(GLOB ffmpeg_shared_libries ${FFMPEG_DEV_ROOT}/bin/*dll)
#添加头文件链接
include_directories(${FFMPEG_DEV_ROOT}/include)
##添加静态库文件夹
link_directories(${FFMPEG_DEV_ROOT}/lib)
##添加动态库链接
link_libraries(avformat
avcodec
avfilter
avdevice
swresample
swscale
avutil)
#MINGW 添加宏标志
if (MINGW)
add_compile_definitions(__STDC_CONSTANT_MACROS)
endif ()
#添加可执行文件
add_executable(ffmpeg_learn_hello src/main.cpp)
#windows下复制DLL文件到可执行文件目录
if (WIN32)
foreach (FFMPEG_DLL ${ffmpeg_shared_libries})
message("FFMPEG_DLL ${FFMPEG_DLL}")
add_custom_command(TARGET ffmpeg_learn_hello POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
"${FFMPEG_DLL}"
$<TARGET_FILE_DIR:ffmpeg_learn_hello>
COMMENT "copy ${FFMPEG_DLL}"
)
endforeach ()
endif ()
cpp
extern "C" {
#include <libavutil/avutil.h>
}
int main() {
av_log_set_level(AV_LOG_INFO);
av_log(nullptr, AV_LOG_INFO, "av_log\n");
return 0;
}
编译
mingw 编译
提前配置好mingw环境
创建工作目录
bash
mkdir build && cd build
cmake 构建项目
bash
cmake .. -G "MinGW Makefiles"
编译项目
bash
cmake --build .
#或者make编译
#mingw32-make.exe
运行
bash
.\ffmpeg_learn_hello.exe
MSVC编译
提前下载VS
创建工作目录
bash
mkdir build && cd build
cmake 构建项目
bash
cmake ..
编译项目
bash
cmake --build .
运行
bash
.\Debug\ffmpeg_learn_hello.exe