Linux Ubuntu 编译FFMPEG音视频库,并实现例程

Posted 赵新政

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux Ubuntu 编译FFMPEG音视频库,并实现例程相关的知识,希望对你有一定的参考价值。

1 . 标题编译与安装

1 注意,先确保系统中拥有alsa音频驱动,可以通过alsa命令看到是否拥有,没有就apt-get alsa即可,否则没法使用linux进行录音;确保系统中安装了libsdl跟yasm

sudo apt-get install libsdl2-dev
sudo apt-get install yasm

另外,如果需要使用libfdk_aac对音频记性操作,就需要先安装好:

 sudo apt-get install libfdk-aac-dev

2 下载源代码ffmpeg

3 cd 进入目录,执行编译配置命令 :

./configure  --prefix=/usr/local/ffmpeg     --enable-debug=3    --enable-shared   --disable-static --enable-sdl2

其中sdl的enable是保证使用了sdl,可以编译出来ffplay;如果需要启动libfdk-aac来编码aac格式文件,就加上下面的参数:

--enable-libfdk-aac

4 开始编译:

make -j 4 

(此处是指定cpu几核,多线程编译,是多核就写多少个就行)

5 执行安装:

make install

6 执行如下命令,测试音频输入功能

ffmpeg -f alsa -i hw:0,0 out.wav

7 执行如下命令,测试音频外放功能

ffplay out.wav

2 . 头文件与链接库配置

1 sudo gedit ~/.bashrc 打开bash的运行环境配置文件
2 加入:

#ffmpeg命令的环境变量配置
export PATH=/usr/local/ffmpeg/bin:$PATH
#运行时链接库配置,$LD_LIBRARY_PATH这里可能在文件的前面也配置了一堆库,所以在这里用:隔开,大家粘结在一起,形成了动态库的环境变量
export LD_LIBRARY_PATH=/usr/local/ffmpeg/lib:$LD_LIBRARY_PATH
#这里是ffmpeg或者各种linux库的pkg-config文件的存在地点,linux的pkg-config命令会用到
export PKG_CONFIG_PATH=/usr/local/ffmpeg/lib/pkgconfig:$PKG_CONFIG_PATH

保存退出后,更新source

source   ~/.bashrc

案例程序:

#include<iostream>
extern "C" {
	#include<libavutil/avutil.h>
}


int main(){
	av_log_set_level(AV_LOG_DEBUG);
	av_log(NULL, 3, "av is ok");
	return 0;
}

这里注意,一定要加入extern C,因为ffmpeg是c语言的函数库,里面的编译链接规则遵守C语言的规则,故而需要告诉编译器,括号中间的头文件所指向的代码库,请都遵守C语言的编译链接规则

编译命令:

g++ -g -o test test.cpp `pkg-config --libs --cflags libavutil`

其中:pkg-config --libs --cflags libavutil ,可以单独执行,可以看到输出的-I -L 的结果,即为程序的编译链接提供了头文件跟lib库的路径,注意这个命令围起来的不是普通的单引号!

以上是关于Linux Ubuntu 编译FFMPEG音视频库,并实现例程的主要内容,如果未能解决你的问题,请参考以下文章

FFmpeg移植Android编译生成单个库

Ubuntu安装FFmpeg

linux下ffmpeg库 ARM交叉编译

基于Ubuntu交叉编译FFmpeg Windows SDK

FFmpeg编译安装

FFmpeg之Linux下编译与调试