14
1月
2021
将可变帧率 (VFR) 视频转换为恒定帧率 (CFR)
10:11

将可变帧率 (VFR) 视频转换为恒定帧率 (CFR)

14 1月 2021 10:11

大多数智能手机的摄像机都以恒定帧率(每秒 30 或 60 帧)录制视频。
然而,在 GCam 应用程序中,夜间拍摄时可以自动设置帧率——当光线不足时,帧率会降至 14 或更低,但画面中的图像会变得更亮。使用可变帧率 (VFR) 录制必须以 30 fps 的恒定帧率 (CFR) 重新编码。

我们获取有关视频的信息

在开始转换之前,您应该通过视频分辨率,帧速率和声音编码参数查找文件参数,

让我们安装程序:

sudo apt-get install mediainfo mediainfo-gui

在源视频参数的屏幕上结论:

mediainfo in.mP4

in.mp4是源文件。

除其他信息外,将显示以下内容:
Codec ID : avc1
Codec ID/Info : Advanced Video Coding
Duration : 32 s 455 ms
Bit rate : 9 603 kb/s
Width : 1 920 pixels
Height : 1 080 pixels
Display aspect ratio : 16:9
Frame rate mode : Variable
Frame rate : 19.350 FPS
Minimum frame rate : 14.238 FPS
Maximum frame rate : 33.174 FPS
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive

因此,在此视频中,平均比特率为19.350 fps(变化的限制为14-33 fps)。

在Linux中的帧速率(FPS)上的视频变化

传统上,FFMPEG负责Linux中的视频处理。

如何致电FFMPEG更改文章中读取的帧速率:
https://trac.ffmpeg.org/wiki/ChangingFrameRaTE

命令调用视频:

ffmpeg -i in.mp4 -filter:v fps=fps=30 out.mp4

in.mp4是源文件
out.mp4-结果文件。

在Celeron 2600处理器上以1920x1080分辨率进行重新编码视频的速度为每秒0.25帧。
由此产生的视频具有恒定的比特率和帧速率:

Codec ID : avc1
Codec ID/Info : Advanced Video Coding
Duration : 32 s 467 ms
Bit rate : 6 122 kb/s
Width : 1 920 pixels
Height : 1 080 pixels
Display aspect ratio : 16:9
Frame rate mode : Constant
Frame rate : 30.000 FPS

从视觉上看,播放视频时,什么都没有改变 - 源视频中帧速率低引起的小混蛋。 但是,人员的频率已变得恒定,适用于使用视频或托管托管(例如YouTube或Rutube)。

使用QP参数在编码阶段进行质量调整

很容易注意到,经过转码后,流速降低(9603 kb/s,变为6,122 kb/s)。
通过设置量子QU进行转码时,可以降低或增加压缩程度antizer parameter

例如:
-QP 23

重新编码视频的完整命令(参数-QP 23可能不同):

ffmpeg -i in.mp4 -filter:v fps=fps=30 -qp 23 out.mp4

表中显示了比特率测试视频 1920x1080的依赖性(P)每秒30帧的反转 QP
QP越大,压缩越强,质量就越低。

对于974帧的视频,最终比特率的值是通过实验性获得的。 框架存在(从近距离拍摄汽车的夜间射击)。

表1。

-QP 比特率
21 10.5 Mb/s
22 9 461kb/s
23 8 682kb/s
24 7 720kb/s
25 7 101kb/s
26 6 352kb/s
27 5 588kb/s
28 4 987kb/s
29 4 453kb/s
30 3 966kb/s
31 3 546kb/s
32 3 156kb/s
33 2 824kb/s
34 2 502kb/s
35 2 236kb/s

文章中推荐的比特率在于5-8 Mbps的范围(“量子”参数的值在 28-23 内。

!!!!我查看了生成的文件 - 的确,8 Mbps的压缩工件没有(QP = 23 ... 24)。压缩迹象的迹象小于4 Mbps(QP = 30或更多)!

使用“恒定质量”参数CRF调整视频质量

我在文章中读了此方法
https://slhck.info/video/2017/02/24/crf-guide.htmL.

最佳值 crf 也在18到25范围内,其中18个是最好的,28是最差的质量。

表2。

-CRF 比特率
18 10.4 Mb/s
19 9 404kb/s
20 8 482kb/s
21 7 628kb/s
22 6 844kb/s
23 6 122kb/s
24 5 465kb/s
25 4 867kb/s
26 4 329kb/s
27 3 848kb/s
28 3 417kb/s
29 3 032kb/s
30 2 693kb/s
31 2 390kb/s

CRF = 23中视频的质量非常好。 随着CRF = 26,随着相机的快速移动,“正方形”是显而易见的。

限制最大流量

为了使视频在流中播放,有必要限制位流量的速度,以便在最困难的场景中,比特率不会在限制之外“飞出”传输通道的限制。

编码过程中的上限限制通常受到以下选项的限制:

-b:v 10000k
其中10,000k - 10,000k - 最大信道速度,单位:千比特/秒。限制值可以是任意值,但必须高于给定 crf 的平均比特率。(请参见上面的第二个表)。 此参数类似于IP网络中的成型 - 最大速度受到限制。

选择哪种调整视频,QP或CRF的方法?

如果使用QP参数,则动态和静态场景的压缩程度相同。 这意味着对于静态人员来说,压缩可能过多,并且对于动态(眼睛/大脑几乎没有反应) - 不足。

CRF参数以相反的方式工作 - 确定视频所有帧的平均“主观”质量。 例如,对于动态场景,拍摄快速动物,通过机器,最尖锐的过渡将被模糊(节省比特率),但是速度较慢的动作看起来会比恒定的QP更好。

添加。 通过同时修剪开始和结束时标记的视频

有时您需要剪切视频的开始和结尾。 例如,如果您陷入事故,并且需要将视频从注册服务商中转码。

团队线:

ffmpeg -i FILE211027-172845.MOV -qp 35 -filter:v fps=fps=30 -ss 00:00:00 -to 00:00:44 out3.mp4

在哪里开始(启动视频) - 到结束(视频的结尾)。 -QP压缩(带有-QP 35流量约2.2 mbit/s -maximum压缩)。

结论:

  1. FFMPEG程序允许您将视频从人员的可变频率转码为常数。
  2. 压缩度(和文件大小)的管理使您可以灵活地调整QP或CRF参数的视频比特率。
  3. 在具有不可预测流量的镜头中,最好使用CRF = 20或21,并限制在10 Mbps的水平上最大比特率。

资料来源:
https://trac.ffmpeg.org/wiki/ChangingFrameRaTE
推荐Google Bitrate - 全高清为 8 Mbps。
https://ru.wikipedia.org/wiki/Constant_Rate_Factor
https://stackoverflow.com/questions/18444194/削减视频...



相关出版物