请尊重作者的作品,请尊重开源协议!!

一、基本操作

1. ffplay

ffplay是一款不怎么好用的视频和音频的播放器,可以播放自己想要播放的视频。

# 语法:
ffplay 【路径 + 文件名】

# 使用方式
ffplay C:\test.mp4

控制方式:

按键功能
Q & Esc退出
方向键控制前进后退播放
鼠标右键窗口任意位置控制播放进度条位置
F全屏
P & Space暂停
W切换显示模式

2. ffprobe

ffprobe用于查看视频的编码等相关视频信息

# 语法
ffprobe 【路径 + 文件名】

# 使用方式
ffprobe C:\test.mp4

二、文件转换

1. 转换格式

视频有封装编码这两个部分,封装用于告诉视频是什么格式,通过什么软件处理;编码用于规划视频与音频如何压缩的方式。

基本文件格式编码转换方式如下所示……

# 语法
ffmpeg -i 【输入文件位置与文件名】 【输出文件位置与文件名】

# 使用方式
ffmpeg -i C:\input.avi D:\output.mp4

2.改变音频编码

改变音频的编码方式如下所示……

# 语法
ffmpeg -i 【输入文件位置与文件名】 -acodec 《解码器》 -ar 《采样率》 -ab 《比特率》 -ac 《声道》 【输出文件位置与文件名】

# 使用方式
ffmpeg -i input.wav -acodec libmp3lame -ar 44100 -ab 320k -ac 2 output.mp3

该使用方式是将输入文件 input.wav 转换为 output.mp3 其中编码器使用的是 libmp3lame 采样率是 44100Hz 比特率是 320k 输出声道是 2,输出文件为 output.mp3(《》中的内容可以缺省,则输出的文件数据和输入相同)。

采样率:采样率是指每秒从连续的波形中采样数字信号的次数(比如44100Hz就是每秒采样44100次)。

比特率:是指音频每秒钟通过的数据量,单位是 bit。

3.改变视频编码

改变视频编码方式如下所示……

# 语法
ffmpeg -i 【输入文件位置与文件名】 -s 《视频分辨率》 -vcodec 《视频编码器》 -preset 《编码器预设》 -crf 《码率控制》 -r 《视频帧率》【输出文件位置与文件名】

# 使用方式
ffmpeg -i input.avi -s 1920x1080 -vcodec libx264 -preset slow -crf 21 -r 60 output.mp4

该方式是输入 input.avi 这个文件,输出视频分辨率为 1920*1080 编码器为 libx264 就是h.264编码器,预设为 slow 码率控制为 21 帧率为 60FPS 导出视频为 output.mp4。

视频分辨率:分辨率我们一般说的是清晰度,是视频的长宽比,输入参数为 WxH。
编码器预设:调节预设可以改变编码算法的精度。精度越高,编码速度越慢,视频大小越小。编码速度从快到慢有这十个项目可选:ultrafast、superfast、veryfast、faster、fast、medium、slow、veryslow、placebo。个人建议导出视频分享到网络上时如果不在意文件大小的话可以使用fast,如果发布到视频网站上在意文件大小话可以使用veryslow或者placebo。

码率控制(Constant Rate Factor):是一个宽泛的控制视频的比特率的参数。参数大小从 0-51,参数越高,视频质量越差。

视频帧率:用于控制视频每秒多少帧,帧率越高,视频越流畅。

## 4. 码率

ffmpeg可以设置平均码率,最大码率,最小码率

# 语法
ffmpeg …… -b:v 《平均码率》 -minrate 《最小码率》 -maxrate 《最大码率》 -bufsize 《缓冲器设置》 ……

注:…… 中的内容之前已经提到过,为了方便阅读,所以省略。

# 使用方式
ffmpeg -i input.avi -vcodec libx264 -b:v 8000k -minrate 5000k -maxrate 6000k -bufsize 4000 output.mp4

该方式是输入 input.avi 这个文件,解码器设置为 libx264 ,平均码率为 8000k,最小码率为 5000k,最大码率为 6000k,缓冲器设置为 4000,输出为 output.mp4。

三、提取与合并视频

1. 提取视频或音频

提取视频使用如下命令……其中,-an 是移除音频轨道。

# 语法
ffmpeg -i 【输入文件位置与文件名】 -an 【输出文件位置与文件名】

# 使用方式
ffmpeg -i input.mp4 -an output.mp4

提取音频可以使用如下命令……-vn 是移除视频轨道。

# 语法
ffmpeg -i 【输入文件位置与文件名】 -vn 【输出文件位置与文件名】

# 使用方式
ffmpeg -i input.mp4 -vn output.mp3

提取指定视频或者音频轨道可以使用如下命令……

# 语法
ffmpeg -i 【输入文件位置与文件名】 -map 【轨道名称(用 x:x 代表轨道)】 【输出文件位置与文件名】

# 使用方式
ffmpeg -i input.avi -map 0:0 output.mp4

2. 合并视频或音频

合并视频和音频可以使用如下命令……

# 语法
ffmpeg -i 【输入第一个文件位置与文件名】 -i 【输入第二个文件位置与文件名】 -c copy 【输出文件位置与文件名】

#使用方式
ffmpeg -i input.mp3 -i input.mp4 -c copy output.mp4

这里使用 -c copy 的命令是代表使用原本的编码方式,在输入已经处理过的视频和音频时,就不用重复编码了……

通过这个软件就可以满满的使用CPU来编码与解码,但是这个速度太慢了……据说ffmpeg可以结合显卡来硬编码,未来找一段时间学习学习……

——望夜菌


参考视频:【【FFmpeg 分P教学】转码、压制、录屏、裁切、合并、提取 … 统统不是问题。-哔哩哔哩】 https://b23.tv/m6RXVWu