https://blog.csdn.net/biezhihua/article/details/52734662
前言
这两天安装在Mac上装了一下FFMPEG,并创建了个Clion的C++工程,在引入FFMPEG作为Libraries的时候遇到了点问题,记录一下。
如何安装FFMPEG
请看这个文档,不多说:MAC INSTALL FFMPEG
Clion Project 如何引入lib
setup 1
安装完FFMPEG后把:
/usr/local/Cellar/ffmpeg/3.1.4/include
/usr/local/Cellar/ffmpeg/3.1.4/lib
- 1
- 2
目录复制到项目根目录下(其实也可以不复制,直接在CMakeLists.txt中直接引入绝对路径也可)
setup 2
在CMakeLists.txt中引入include和lib
其中要使用到CMake的几个方法:
include_directories
用于引入.h文件link_directories
用于告诉工程lib的位置target_link_libraries
将lib link 到工程中
其中target_link_libraries
的位置要放在add_executable
之后。
另外请注意
target_link_libraries
的第一个参数是工程name,也就是CMakeLists.txt中的project(FfmpegDemo)
。target_link_libraries
的lib名是类似于libavcodec.a
中lib*.a
中*
的位置,也即是说libavcodec.a
的lib名是avcodec
example:
include_directories(./include/)
link_directories(./lib/)
set(SOURCE_FILES main.cpp)
add_executable(FfmpegDemo ${SOURCE_FILES})
target_link_libraries(
FfmpegDemo
avcodec
avdevice
avfilter
avformat
avresample
avutil
postproc
swresample
swscale
)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
setup 3
编写简单示例代码验证是否引入成功。
Note:由于是C++工程,引入头文件时需要extern "C" {}
extern "C" {
#include<libavformat/avformat.h>
#include<libavcodec/avcodec.h>
}
using namespace std;
int main() {
cout << "result" << endl;
cout << avcodec_configuration();
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
result :
result
--prefix=/usr/local/Cellar/ffmpeg/3.1.4 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-opencl --enable-libx264 --enable-libmp3lame --enable-libxvid --disable-lzma --enable-vda
Process finished with exit code 0
- 1
- 2
- 3
- 4
- 5