概念
帧率
帧率就是每一秒包含的帧数,在动画片中用的比较多的是12fps 不会对视频的流畅度有太大的影响同时又能节省成本,在电影中常用 24fps 是比较适合人眼的观感,如果低于 24 fps 的话,人眼看起来就会有卡顿的感觉。
码率
码率也叫比特率,是指每秒传送的比特(bit)数,数值越大,传送数据速度越快,是一个决定整体视频质量的参数。
FFprobe
ffprobe 是一个多媒体流分析工具。它从多媒体流中收集信息,并且以人类和机器可读的形式打印出来。它可以用来检测多媒体流的容器类型,以及每一个多媒体流的格式和类型。它可以作为一个独立的应用来使用,也可以结合文本过滤器执行更复杂的处理。
简单用法
ffprobe .\202112070941.mp4
输出详解
整体输出内容如上图,主要分为视频流和音频流两个部分:
视频流:
-
h264: 编码格式是H264的格式,目前的主流。
-
yuv420p: 视频数据彩色编码,类似于相对于 RGB 颜色空间,目前的主流。
-
2160x1080 : 视频的分辨率
-
1581 kb/s: 视频的码率
-
24 fps: 表示平均帧率
-
24 tbr: 实际帧率,该参数倾向于一个基准,和视频的封装格式相关。
-
12288 tbn: 表示视频流封装层时间 timebase
-
48 tbc : 表示视频流解码 timebase
音频流:
-
aac (LC) (mp4a / 0x6134706D): 音频编码,这里是mp4
-
44100 Hz: 采样率
-
stereo: 立体声
-
fltp: 数据格式为浮点型
-
128 kb/s : 音频的码率
FFmpeg
FFmpeg是一个快速的音视频转换工具。
简单用法
ffmpeg [全局参数] [输入文件参数] -i [输入文件] [输出文件参数] [输出文件]
常用参数:
-c:指定编码器
-c copy:直接复制,不经过重新编码(这样比较快)
-c:v 指定视频编码器
-c:a 指定音频编码器
-i:指定输入文件
-an:去除音频流
-vn: 去除视频流
-preset:指定输出的视频质量,会影响文件的生成速度,有以下几个可用的值 ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow。
-y:不经过确认,输出时直接覆盖同名文件。
视频压缩优化
ffmpeg -i D:\src.mov -c:v libx264 -preset veryslow -crf 18 -c:acopy D:\out.mp4
-
-i: 指定读入文件
-
-c:v: 指定音视频编码格式,libx264 是通用性能较好一种。
-
-preset: 主要调节编码速度和质量的平衡,有ultrafast、superfast、veryfast、faster、fast、medium、slow、slower、veryslow、placebo这10个选项,速度快到慢,质量差到好。
-
-crf: 该参数可以控制转码,以达到视频的压缩率和质量的均衡性。18-28是一个合理的范围,18被认为是视觉无损的。
-
-c:acopy: 音频原文拷贝
-
-tune: 的参数主要配合视频类型和视觉优化的参数,或特别的情况才会使用
FFplay
非常少用,只用在命令行下使用。
参考文档:www.ruanyifeng.com/blog/2020/01/ffmpeg.html