我每年运行 Windows 服务来转换大约 10k 个视频。大多数视频都没有问题,但有些视频我没有发现问题:
=> 如果机器支持 GPU 编码,则从 FFProbe 中提取 -b:v 的值以获得更好的结果
大多数视频都在这个相同的命令上运行:
-i in.mp4 -an -vcodec libx264 -vprofile baseline -pix_fmt yuv420p -b:v 55600 -vf yadif -g 25 -movflags +faststart -y out.mp4
据我了解,问题在于:FFProbe 仅返回平均比特率,这太低了。我尝试切换到 -b:v、-maxrate:v、-bufsize:v,效果一般。视频质量好多了,但仍然低于 org 文件。即使比特率与 org 文件相同。
问题:
- 有没有更好的方法将所有视频转换为基线?
- 如果必须支持大多数设备(PC/Mac/Android/IPhone),是否仍建议将视频转换为基线?
- 知道如何在没有人为干预的情况下检测我的转换已毁坏的视频吗?
不幸的是,这些视频是保密的,但我截取了一个样本,以下是组织元数据。糟糕的结果如下:
Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : High@L4
Format settings, CABAC : Yes
Format settings, RefFrames : 5 frames
Codec ID : avc1
Codec ID/Info : Advanced Video Coding
Duration : 19 min 2 s
Bit rate : 801 kb/s
Width : 1 920 pixels
Height : 1 080 pixels
Display aspect ratio : 16:9
Frame rate mode : Constant
Frame rate : 30.000 FPS
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Bits/(Pixel*Frame) : 0.013
Stream size : 109 MiB (76%)
Writing library : x264 core 160 r10 33f9e14
Encoding settings : cabac=1 / ref=5 / deblock=1:0:0 / analyse=0x3:0x113 / me=hex / subme=8 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=1 / me_range=16 / chroma_me=1 / trellis=2 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads=34 / lookahead_threads=5 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / stitchable=1 / constrained_intra=0 / bframes=3 / b_pyramid=2 / b_adapt=2 / b_bias=0 / direct=3 / weightb=1 / open_gop=0 / weightp=2 / keyint=infinite / keyint_min=30 / scenecut=40 / intra_refresh=0 / rc_lookahead=50 / rc=crf / mbtree=1 / crf=20.0 / qcomp=0.60 / qpmin=5 / qpmax=69 / qpstep=4 / vbv_maxrate=5500 / vbv_bufsize=15000 / crf_max=0.0 / nal_hrd=none / filler=0 / ip_ratio=1.40 / aq=1:1.00
Encoded date : UTC 2020-05-07 15:14:22
Tagged date : UTC 2020-05-07 15:14:22
Color range : Limited
Color primaries : BT.709
Transfer characteristics : BT.709
Matrix coefficients : BT.709
答案1
问题到底是什么?你为什么要尝试匹配比特率?为什么不使用 crf 编码?
如果必须支持大多数设备(PC/Mac/Android/IPhone),是否仍建议将视频转换为基线?
上一部无法高调播放的 iPhone 是在 8 年前发布的。除非你需要 iPhone 4 的支持,否则不行。
有什么想法可以在没有人工干预的情况下检测误导视频吗?
什么是“误导性”视频?
答案2
感谢 szatmary 推动我走向正确的方向!
有没有更好的方法将所有视频转换为基线?
答:是的,不要使用基线
如果必须支持大多数设备(PC/Mac/Android/IPhone),是否仍建议将视频转换为基线?
答:不会!我们将切换到 High Profile,并尝试使用 crf 进行流式传输(大量静态内容)
知道如何在没有人为干预的情况下检测我的转换已毁坏的视频吗?
答:在 org. 编码设置中搜索“crf”。将它们转换为恒定比特率需要其他策略