FFmpeg总结笔记

11/27/2022 Linux

# 简介

FFmpeg (opens new window)(Fast Forward MPEG) 是视频处理最常用的开源软件。它可以用来处理音视频的编解码、格式转换、剪辑、合并、抽取、压缩、解压缩、滤镜、字幕等等。大量用于视频网站和商业软件(比如 Youtube 和 iTunes)

官方文档

# FFmpeg 工作流程

  1. 读取输入源
  2. 进行音视频的解封装
  3. 解码每一帧音视频数据
  4. 编码每一帧音视频数据
  5. 进行音视频的重新封装
  6. 输出到目标

# 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() 执行保存

# 更多

🕑 最后更新时间: 2022-11-27 17:58