写在前面
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。
官方文档(英文):http://ffmpeg.org/ffmpeg.html
1、在linux上安装FFmpeg
1.1、安装
wget http://www.ffmpeg.org/releases/ffmpeg-4.1.6.tar.gz
tar -xvf ffmpeg-4.1.6.tar.gz
cd ffmpeg-4.1.6/
./configure && make && make install
ffmpeg -version # 查看版本号
安装时出现nasm/yasm not found or too old错误,就是需要安装yasm汇编指令编译器。
cd ..
wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar -xvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure && make && make install
1.2、简单使用
常用的命令参数
#主要参数
-i 设定输入流
-f 设定输出格式
-ss 开始时间
#视频参数
-b 设定视频流量(码率),默认为 200Kbit/s
-r 设定帧速率,默认为 25
-s 设定画面的宽与高
-aspect 设定画面的比例
-vn 不处理视频
-vcodec 设定视频编解码器,未设定时则使用与输入流相同的编解码器
#音频参数
-ar 设定采样率
-ac 设定声音的 Channel 数
-acodec 设定声音编解码器,未设定时则使用与输入流相同的编解码器
-an 不处理音频
简单的使用
#制作 M3U8 视频
#先用 ffmpeg 把 abc.mp4 文件转换为 abc.ts 文件
ffmpeg -y -i abc.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb abc.ts
#再用 ffmpeg 把 abc.ts 文件切片并生成 playlist.m3u8 文件,5 秒一个切片
ffmpeg -i abc.ts -c copy -map 0 -f segment -segment_list playlist.m3u8 -segment_time 5 abc%03d.ts
#为视频添加 logo
ffmpeg -i input.mp4 -i iQIYI_logo.png -filter_complex overlay output.mp4
#将输入的 1920x1080 缩小到 960x540 输出
ffmpeg -i input.mp4 -vf scale=960:540 output.mp4
#抓取视频的一些帧,存为 jpeg 图片
#-r 表示每一秒几帧
#-q:v 表示存储 jpeg 的图像质量,一般 2 是高质量。
ffmpeg -i input.mp4 -r 1 -q:v 2 -f image2 pic-%03d.jpeg
-ss 表示开始时间
-t 表示共要多少时间。
ffmpeg -i input.mp4 -ss 00:00:20 -t 10 -r 1 -q:v 2 -f image2 pic-%03d.jpeg
#FFMPEG 截取视频中的图片作为封面
ffmpeg -ss 3 -i input.mp4 -vf "select=gt(scene\,0.4)" -frames:v 5 -vsync vfr -vf fps=fps=1/600 out%02d.jpg
#FFMPEG 截取指定时长的视频
ffmpeg -i input.avi -vcodec copy -acodec copy -ss 00:30:00 -t 00:30:00 output2.avi
#常用
ffmpeg -i foo.mp4 -codec copy -vbsf h264_mp4toannexb -map 0 -f segment -segment_list out.m3u8 -segment_time 10 out%03d.ts
2、在windows上安装FFmpeg
下载地址:https://www.gyan.dev/ffmpeg/builds/
下载完成后解压,进入它的bin目录
把bin目录配置到系统环境变量的path里面
然后打开cmd,输入ffmpeg,能找到指令就是按照成功了