# 简介
FFmpeg (opens new window)(Fast Forward MPEG) 是视频处理最常用的开源软件。它可以用来处理音视频的编解码、格式转换、剪辑、合并、抽取、压缩、解压缩、滤镜、字幕等等。大量用于视频网站和商业软件(比如 Youtube 和 iTunes)
官方文档
- ffmpeg (opens new window): ffmpeg tool
- ffmpeg-all (opens new window): ffmpeg tool and FFmpeg components
# FFmpeg 工作流程
- 读取输入源
- 进行音视频的解封装
- 解码每一帧音视频数据
- 编码每一帧音视频数据
- 进行音视频的重新封装
- 输出到目标
# FFmpeg 的安装
Centos7 ffmpeg的安装
# 依赖准备
yum install -y gcc gcc-c++
yum install -y openssl openssl-devel
# 安装yasm,Yasm是一个汇编器
cd /usr/local/src
wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar -zxf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure
make && make install
# mp3支持,lame是目前非常优秀的一种MP3编码引擎
cd /usr/local/src
wget https://nchc.dl.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz
tar -zxf lame-3.100.tar.gz
cd lame-3.100
./configure
make && make install
ln -s /usr/local/lib/libmp3lame.so.0 /usr/lib64/libmp3lame.so.0
# 安装ffmpeg
cd /usr/local/src
wget http://ffmpeg.org/releases/ffmpeg-4.4.tar.gz
tar -zxf ffmpeg-4.4.tar.gz
cd ffmpeg-4.4
./configure --prefix=/usr/local/ffmpeg --enable-shared --enable-libmp3lame --enable-openssl
make && make install
echo "/usr/local/ffmpeg/lib" >> /etc/ld.so.conf
ldconfig
echo 'export PATH=$PATH:/usr/local/ffmpeg/bin' >> /etc/profile
source /etc/profile
# FFmpeg 的使用格式及常用参数
ffmpeg [全局参数] {[输入文件参数] -i 输入文件地址} ... {[输出文件参数] 输出文件地址} ...
- -hide_banner 隐藏版权声明
- -y 覆盖输出文件
- -i 输入文件
- -f 指定输出文件格式
- -c copy 直接拷贝,不经过转码,速度更快
- -r 指定帧率,默认1秒截图25次,可使用小数,r=1/多少秒截一张
- -an 禁用音频
- -vn 禁用视频
- -ar 设置音频采样率 96k, 112k, 128k, 160k, 192k, 256k, 320k
- -ac 设置音频通道数
- -ab | -b:a 设置音频比特率
- -c:v:指定视频编码器
- -c:a:指定音频编码器
- -t:指定转码时长
- -ss:指定转码开始时间
- -vf video filters,指定简单滤镜,指定宽,高度比例缩放:scale=320:-1
- -filter_complex 指定复杂滤镜
# FFmpeg 的常见用法
#查看文件信息
ffmpeg -i input.mp4 -f null /dev/null
#提取音频
ffmpeg -i input.mp4 -f mp3 output.mp3
#提取音频,指定采样率、比特率、通道数
ffmpeg -i input.mp4 -vn -ar 16000 -ac 1 -b:a 8k -f mp3 output.mp3
#提取图片关键帧
ffmpeg -i input.mp4 -f image2 -an -r 1 output/image%d.jpg
#从指定时间开始,连续对1秒钟的视频进行截图
ffmpeg -i input.mp4 -f image2 -an -ss 00:01:24 -t 00:00:01 output/image%d.jpg
#提取一张图片
ffmpeg -i input.mp4 -f image2 -an -vframes 1 -q:v 2 output.jpg
#获取分贝(dBFS)信息,现实生活中使用的是dBSPL
ffmpeg -i input.mp4 -filter_complex volumedetect -c:v copy -f null /dev/null
#转换视频格式
ffmpeg -i input.mp4 -c copy output.avi
#改变视频分辨率为480P
ffmpeg -i input.mp4 -vf scale=480:-1 output.mp4
#多个输出
ffmpeg -i input.mp4 -c copy output1.avi -vf scale=480:-1 output2.mp4
# 在PHP中如何调用FFmpeg
ffmpeg-php (opens new window)是一个在PHP中调用ffmpeg的简单实现库,有以下几个方法:
- input() 指定输入文件
- output() 添加输出文件
- save() 执行保存
# 更多
- 阮一峰 FFmpeg 视频处理入门教程 (opens new window)
- FFmpeg 开发笔记1 (opens new window)
- FFmpeg 开发笔记2 (opens new window)
- 最新ffmpeg资料整理 (opens new window)
- 一次性搞懂dBSPL、dBm、dBu、dBV、dBFS的区别! (opens new window)
🕑 最后更新时间: 2022-11-27 17:58