一、环境
macOs :
10.15.3 (19D76)
Xcode:
Version 11.7 (11E801a)
ffmpeg:
4.3.1
二、安装
使用brew工具安装
brew install ffmpeg
安装完成后,可以在/usr/local/Cellar/ffmpeg/4.3.1_4/目录下找到:
头文件、库文件、可执行文件,分别位于include、lib、bin子目录。
$pkg-config --cflags --libs libavcodec
-I/usr/local/Cellar/ffmpeg/4.3.1_4/include -L/usr/local/Cellar/ffmpeg/4.3.1_4/lib -lavcodec
$ ls /usr/local/Cellar/ffmpeg/4.3.1_4/
COPYING.GPLv2 COPYING.LGPLv3 LICENSE.md include
COPYING.GPLv3 Changelog README.md lib
COPYING.LGPLv2.1 INSTALL_RECEIPT.json bin share
三、配置
新建一个xcode工程,选择,之后选择"c++"工程,
按照以下步骤,设置一下头文件路径和库文件路径。
同样的,设置链接库,点击"+",选择"Add Other",“Add Files”,然后按快捷键,“CMD + Shift + G”,输入目标路径“”
目录下所有.a都选上。
四、测试
修改main.cpp文件如下,请注意我这里是c++项目,因为ffmpeg是c库,所以,在include ffmpeg头文件时,需要加extern “C”, 否则会报编译错误。
//
// main.cpp
// ffmpeg_demo
//
// Created by fish on 2021/2/4.
// Copyright © 2021 fish. All rights reserved.
//
#ifdef __cplusplus
extern "C"{
#endif
#include <libavcodec/avcodec.h>
#ifdef __cplusplus
}
#endif
#include <iostream>
int main(int argc, const char * argv[]) {
// insert code here...
std::cout << avcodec_version() << std::endl;
return 0;
}
输出:
3824484
Program ended with exit code: 0
五、遇到的问题
不加extern "C"导致编译报错。
Undefined symbols for architecture x86_64:
"avcodec_version()", referenced from:
_main in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
六、 总结
虽然,avcodec_version()输出,是一个不明所以然的数字,这个我们留到以后研究吧。
总之整个程序,编译->链接->执行,流程跑通,也确实调用到了ffmpeg里面的方法。目的已经达到。