clion集成ffmpeg

发布时间:2024-07-30 10:29:14 作者:yexindonglai@163.com 阅读(372)

安装ffmpeg

下载
前往github下载 https://github.com/BtbN/FFmpeg-Builds/releases/tag/latest
前往官网下载 https://ffmpeg.org/download.html

提供了两个可用的版本

  • ffmpeg-n7.0-latest-win64-gpl-7.0.zip
  • ffmpeg-n7.0-latest-win64-gpl-shared-7.0.zip

GPL (GNU通用公共许可证) 当您使用以GPL许可证发布的FFmpeg版本时,您的应用程序也必须使用GPL或类似的兼容开源许可证发布。这意味着您的应用程序的源代码必须是开放的,并且您需要提供源代码给终端用户。 如果您使用GPL版本的FFmpeg,您不能将其包含在专有软件中,因为这将违反GPL的条款。 GPL Shared (GNU通用公共许可证 - 共享库版):

GPL-Shared 是一种修改过的GPL版本,它允许FFmpeg以共享库的形式使用,而不要求使用FFmpeg的应用程序必须使用GPL许可证。这允许您将FFmpeg嵌入到专有应用程序中而无需开放应用程序的源代码。 这种许可证是一种GPL的例外,允许FFmpeg以库的形式被链接到专有软件中。

下载后直接解压即可;\bin目录下有三个文件

  • ffmpeg.exe : 是一个命令行工具箱,用于处理、转换和串流多媒体内容
  • ffplay.exe : 媒体播放器,功能也很强大
  • ffprobe.exe: 是一款简单的分析工具,用于检查多媒体内容

然后安装 ffmpeg 的环境变量,将bin 目录加到 Path 中即可

集成

首先打开 clion,新建一个c++的cmake项目,

CMakeLists.txt 文件内容如下

  1. cmake_minimum_required(VERSION 3.27)
  2. project(demo)
  3. set(CMAKE_CXX_STANDARD 11)
  4. # 引入 ffmpeg头文件
  5. include_directories(D:\\cpp\\ffmpeg-n7.0-latest-win64-gpl-shared-7.0\\include)
  6. # 指定ffmpeg库文件
  7. link_directories(D:\\cpp\\ffmpeg-n7.0-latest-win64-gpl-shared-7.0\\lib)
  8. add_executable(${PROJECT_NAME} main.cpp)
  9. # 链接库
  10. target_link_libraries(
  11. ${PROJECT_NAME}
  12. avcodec
  13. avdevice
  14. avfilter
  15. avformat
  16. avutil
  17. postproc
  18. swresample
  19. swscale
  20. )

main.cpp 文件内容如下

  1. #include <iostream>
  2. #include <unistd.h>
  3. // 因为ffmpeg 是c语言开发的,所以引入头文件时必须使用 extern "C"
  4. extern "C" {
  5. #include "libavformat/avformat.h"
  6. }
  7. using namespace std;
  8. int main() {
  9. av_log_set_level(AV_LOG_INFO);
  10. av_log(NULL, AV_LOG_INFO, "avformat_configurations: \n %s", avformat_configuration());
  11. // 打印ffmpeg版本
  12. std::cout << av_version_info() << std::endl;
  13. return 0;
  14. }

最后编译运行即可,控制台输出如下

  1. n7.0.1-34-g1ef18d0223-20240725
  2. avformat_configurations:
  3. --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32 --enable-gpl --enable-version3 --disable-debug --enable-shared --disable-static --disable-w32threads --enable-pthreads --enable-iconv --enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp --enable-libxml2 --enable-fontconfig --enable-libharfbuzz --enable-libvorbis --enable-opencl --disable-libpulse --enable-libvmaf --disable-libxcb --disable-xlib --enable-amf --enable-libaom --enable-libaribb24 --enable-avisynth --enable-chromaprint --enable-libdav1d --enable-libdavs2 --enable-libdvdread --enable-libdvdnav --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --enable-frei0r --enable-libgme --enable-libkvazaar --enable-libaribcaption --enable-libass --enable-libbluray --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librist --enable-libssh --enable-libtheora --enable-libvpx --enable-libwebp --enable-lv2 --enable-libvpl --enable-openal --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-librav1e --enable-librubberband --enable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --disable-libdrm --enable-vaapi --enable-libvidstab --enable-vulkan --enable-libshaderc --enable-libplacebo --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg --enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-libs=-lgomp --extra-ldflags=-pthread --extra-ldexeflags= --cc=x86_64-w64-mingw32-gcc --cxx=x86_64-w64-mingw32-g++ --ar=x86_64-w64-mingw32-gcc-ar --ranlib=x86_64-w64-mingw32-gcc-ranlib --nm=x86_64-w64-mingw32-gcc-nm --extra-version=20240725

如果没有安装windows环境变量,需要在Edit Confiigures… -> Environment Variables 中加入以下内容,给当前运行的程序加上环境变量

  1. path=D:/cpp/ffmpeg-n7.0-latest-win64-gpl-shared-7.0/bin

关键字FFmpeg