源码下载
首先进入到ffmpeg官网下载源码:www.ffmpeg.org/download.ht…
源码编译
博主编译环境: Ubuntu22.04 (其他linux发行版都行)
解压源码
cd /data/ffmpeg_study (源码包在此目录中)
tar -xJf ffmpeg-7.1.1.tar.xz (解压后源码目录为ffmpeg-7.1.1)
继续查看下ffmpeg的源码目录结构:
cd ffmpeg-7.1.1
ls -l
ffmpeg-7.1.1
--configure //配置脚本,如:配置哪些decoder,demuxer等组件
--Makefile //编译脚本
--ffbuild // 编译相关的子脚本
--fftools // ffmpeg工具先关源码,如: ffmpeg.c, ffplay.c就在这里
--libavcodec //编解码器源码
--libavdevice //输入/输出设备源码,如:alsa_enc,alsa_dec, v4l2.c等
--libavfilter //音视频裸数据处理滤镜,如:音频重采样,视频缩放,旋转等
--libavformat //封装/解封转源码
--libavutil // 个子组件通用代码
--libpostproc
--libswresample //音频重采样算法代码
--libswscale //视频缩放裁剪算法代码
--tests //测试工具代码
--tools //各种小工具,如: yuvcmp
config
cd ffmpeg-7.1.1
mkdir ../prebuild
./configure --prefix=../prebuild --enable-shared \
--disable-demuxers --enable-demuxer=aac,mov,mp3 \
--disable-decoders --enable-decoder=h264,hevc,aac,mp3 \
--disable-filters --enable-filter=amix,resample,volume
--prefix:用于指定安装目录,没有指定路径时,默认安装路径为/usr/local/bin, /usr/local/lib
--enable-shared:生成动态链接库
--disable-demuxers:ffmpeg默认打开所有demuxer,如果不disable,--enable-demuxer不起作用
--enable-demuxer:用于打开哪些解封装
--disable-decoders:ffmpeg默认打开所有decoder,如果不disable,--enable-decoder不起作用
--enable-decoder:用于打开哪些解码器
--disable-filter:ffmpeg默认打开所有filter,如果不disable,--enable-filter不起作用
--enable-filter:用于打开哪些音视频滤镜
编译&安装
make
make install
tips:可以将上述命令封装成一个shell脚本,每次编译只需运行脚本即可
#!/bin/sh (放置在ffmpeg-7.1.1目录)
./configure --prefix=../prebuild --enable-shared \
--disable-demuxers --enable-demuxer=aac,mov,mp3 \
--disable-decoders --enable-decoder=h264,hevc,aac,mp3 \
--disable-filters --enable-filter=amix,resample,volume
make
make install
编译产物
cd prebuild
ls -l
> bin //ffmpeg,ffplay, ffprob工具
> include //头文件
> lib //库,如:libavcodec.so libavfilter.so
> share //一些demo code
使用ffplay播放音频文件:
ffplay /data/test/20s.mp3