Date: 2018.11.11
文章目录
1、参考
ffmpeg命令行工具利用libx264和libx265编码YUV文件
ffmpeg的mpeg2编码I帧代码解读
2、目录
- ffmpeg框架
- 简介
- 目录结构
- 工作流程
- 编译
- 运行
- ffmpeg开源代码提取
- 总体流程
- MPEG-2解码器为例说明开源代码提取过程
3、ffmpeg框架
3.1 ffmpeg简介
ffmpeg既是一款音视频编解码工具,包括多种音视频编解码器、多种协议的流媒体、多种颜色空间转换、多种采样率转换、多种码率转换等;
提供了多种丰富的插件模块,包括封装和解封装插件、编码和解码插件。
3.2 ffmpeg目录结构
tree -d -L 1
ffmpeg版本:4.1.4
- ffbuild: 编译工具
- libavcodec:音视频编解码库
- libavdevice: 音视频输入输出设备库
- libavfilter:音视频格式封装和解封装库
- libavresample:音频重采样
- libavutil:音视频工具库
- libpostproc:音视频后处理库
- libswresample:音频重采样、采样格式转换、混音
- libswscale:视频缩放和色彩空间转换
3.3 ffmpeg工作流程
3.4 ffmpeg编译
3.4.1 ffmpeg linux平台编译
这个很简单,一般开源代码都是下面这个步骤:
./configure
make
make install
3.4.2 三方库x264编译到ffmpeg库
ffmpeg本身支持一些音视频编码标准格式、文件封装格式以及一些流媒体传输协议,但是支持的数目是有限的。有些模块可以采用第三方外部链接库的方式提供支持。可以通过命令./configure --help查看。如下:
./configure --help
External library support :
(1).下载x264源码并编译出静态库
编译命令:
./configure --disable-asm --enable-static -prefix=./ffmpeg/x264/
make -j8
make install
(2).编译带x264编码器的ffmpeg
编译命令:
./configure --enable-gpl --enable-nonfree --enable-version3 --enable-pthreads --enable-libx264 --enable-static --disable-shared --extra-cflags='-I/ffmpeg/x264/include' --extra-ldflags='-L/ffmpeg/x264/lib -lx264 -lpthread -lm -ldl'
make -j8
输出结果(各个模块库、三个工具ffmpeg、ffplay和ffprobe)在/ffmpeg中
测试x264编码器是否成功编译进ffmpeg命令:
./ffmpeg -encoders
3.5 ffmpeg运行
(1). 查看ffmpeg中x264编码器的参数命令:
./ffmpeg -h encoder=libx264
(2). ffmpeg中运行x264编码的命令行:
./ffmpeg -s cif -i foreman_cif.yuv -vcodec libx264 output.264
4、ffmpeg开源代码提取
4.1 总体流程
4.2 mpeg2编解码器开源代码提取示例
---------------------------------------------THE END!-----------------------------------------------------------