一、VS+CMake
1.1 使用ffmpeg动态库
项目目录结构:
./
├── 3rdparty # 第三方依赖库
│ └── ffmpeg_4.4.1
│ ├── include # 头文件
│ ├── lib # 静态库库
│ └── share
├── build # 编译目录
├── CMakeLists.txt # cmake配置文件
└── src # 源码文件
└── main.c
CMakeLists.txt文件内容:
cmake_minimum_required(VERSION 3.10)
project(ffmpeg_test VERSION 1.0)
set(CXX_STANDARD 11)
set(CXX_STANDARD_REQUIRED True)
# 设置可执行文件输出目录为 bin
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/bin)
# 配置FFmpeg(avcodec.lib时动态库的导入库)
set(FFMPEG_DIR ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/ffmpeg-4.4.1)
include_directories(${FFMPEG_DIR}/include)
# 动态库
set(FFMPEG_LIBS
${FFMPEG_DIR}/lib/avcodec.lib
${FFMPEG_DIR}/lib/avdevice.lib
${FFMPEG_DIR}/lib/avfilter.lib
${FFMPEG_DIR}/lib/avformat.lib
${FFMPEG_DIR}/lib/avutil.lib
${FFMPEG_DIR}/lib/swresample.lib
${FFMPEG_DIR}/lib/swscale.lib
)
# 编译和链接依赖库
add_executable(${PROJECT_NAME} src/main.c)
# 动态库
target_link_libraries(${PROJECT_NAME} PRIVATE ${FFMPEG_LIBS} )
# 使用file(GLOB)获取所有DLL文件
file(GLOB FFMPEG_DLLS "${FFMPEG_DIR}/bin/*.dll")
# 添加自定义命令,在构建后复制DLL文件到输出目录
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${FFMPEG_DLLS}
"${CMAKE_RUNTIME_OUTPUT_DIRECTORY}"
)
main.c文件内容:
#include <stdio.h>
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
int main() {
// 待检查的编解码器列表
const char *codecs[] = {
"libx264", // H.264 编码器
"libx265", // HEVC 编码器
"libfdk_aac", // AAC 编码器
"libmp3lame", // MP3 编码器
NULL // 结束标记
};
printf("FFmpeg 集成编解码器状态检查:\n")

最低0.47元/天 解锁文章
31万+

被折叠的 条评论
为什么被折叠?



