笔者由于不熟悉c++,开始学习ffmpeg还真差点放弃。经过几天的研究,最终终于明白了c++引入链接库和编译的基础。
首先感谢李超老师的这篇文档,想在windows编译ffmpeg的同学可以去看看
参考网址
环境
ffmpeg4.0.2
ubuntu18.04
下面这些都可以通过 apt-get install 来下载我的电脑只需要安装nasm 和 yasm
- gcc
- g++
- make
- cmake
- automake
- gdb
- nasm
- yasm
- wget
- pkg-config
https://github.com/transcode-open/apt-cyg/releases/tag/v1
下载ffmpeg库所依赖的其他库文件
下载fdk-aac
wget https://downloads.sourceforge.net/opencore-amr/fdk-aac-2.0.1.tar.gz
tar xvf fdk-aac-0.1.6.tar.gz
cd fdk-aac-0.1.6
./configure
make && sudo make install
下载lame
wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz
tar -xzf lame-3.99.5.tar.gz
cd lame-3.99.5
./configure
make && sudo make install
下载x264
wget http://mirror.yandex.ru/mirrors/ftp.videolan.org/x264/snapshots/x264-snapshot-20191217-2245-stable.tar.bz2
bunzip2 x264-snapshot-20191217-2245-stable.tar.bz2
tar -vxf x264-snapshot-20191217-2245-stable.tar.bz2
cd x264-snapshot-20191217-2245-stable.tar.bz2
./configure --enable-shared --enable-static --disable-thread --disable-asm --disable-avs
make && sudo make install
lame-3.99.5.tar.gz
libogg-1.1.3.tar.gz
libvorbis-1.1.2.tar.gz
xvidcore-1.1.3.tar.gz
yasm-1.2.0.tar.gz
last_x264.tar.bz2
libdca-0.0.2.tar.gz
a52dec-0.7.4.tar.gz
faad2-2.7.tar.gz
faac-1.26.tar.gz
amrnb-11.0.0.0.tar.bz2
amrwb-11.0.0.0.tar.bz2
编译ffmpeg(-prefix指定了ffmpeg的安装目录)
wget http://ffmpeg.org/releases/ffmpeg-4.1.5.tar.bz2
bzip2 ffmpeg-4.1.5.tar.bz2
tar -vxf ffmpeg-4.1.5.tar
cd ffmpeg-4.1.5
./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-small --arch=x86_64 --enable-nonfree --enable-libfdk-aac --enable-libx264 --enable-filter=delogo --enable-debug --disable-optimizations --enable-shared
make && sudo make install
把ffmpeg加入path
方式1
export PATH=/usr/local/ffmpeg/bin:$PATH
方式2
当前也可以修改 /etc/profile
vim /etc/profile
//最后一行添加
export PATH=/usr/local/ffmpeg/bin:$PATH
//刷新
source /etc/profile
执行ffmpeg
ffmpeg
接下来我们开始使用ffmpeg库
日志系统log.h
#include "iostream"//可以不要
extern "C"
{
#include "libavutil/log.h"
}
int main()
{
av_log_set_level(AV_LOG_DEBUG);//设置日志级别
av_log(NULL,AV_LOG_INFO,"hello wrold");//打印日志
return 0;
}
//-l 指定文件的链接库
gcc -g -o log log.h -lavutil -lstdc++
运行发现找不到报错 -lavutil。因为我上面ffmpeg安装的目录在/usr/local/ffmpeg/lib。而系统默认寻找库的目录在 /usr/local/lib
这时候有两种办法
1是把 ffmpeg目录下lib 和 include的所有文件 分别拷贝到
/usr/local/lib 和 /usr/local/include
2是把 参考一下这篇文档
c++编译添加链接库
备注编译
gcc -g -o delete_file ffmpeg_filesys.cpp -lavformat -lavcodec -lavutil -lswscale -lstdc++ -lpthread -lX11 -lm -ldl
ok!环境终于搞定,现在可以好好学习ffmpeg api了。