ffmpeg for android 零基础学习音视频开发 04 之 C++程序引入编译FFmpeg库(血泪史)

笔者由于不熟悉c++,开始学习ffmpeg还真差点放弃。经过几天的研究,最终终于明白了c++引入链接库和编译的基础。

首先感谢李超老师的这篇文档,想在windows编译ffmpeg的同学可以去看看
参考网址

环境
ffmpeg4.0.2
ubuntu18.04
下面这些都可以通过 apt-get install 来下载我的电脑只需要安装nasm 和 yasm

  1. gcc
  2. g++
  3. make
  4. cmake
  5. automake
  6. gdb
  7. nasm
  8. yasm
  9. wget
  10. 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了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值