【发布时间】:2019-06-03 20:06:55
【问题描述】:
我有一个原始 divx 视频 (3500k),我在 mp4 容器中将其编码为 h.264。例如,我选择使用 1000 k 对其进行编码,以便质量保持接近原始质量。如果我用相同的比特率再编码一次会发生什么?理论上质量应该保持不变?
ffmpeg -i A.divx -an -vcodec h264 -b:v 100k A.mp4
【问题讨论】:
我有一个原始 divx 视频 (3500k),我在 mp4 容器中将其编码为 h.264。例如,我选择使用 1000 k 对其进行编码,以便质量保持接近原始质量。如果我用相同的比特率再编码一次会发生什么?理论上质量应该保持不变?
ffmpeg -i A.divx -an -vcodec h264 -b:v 100k A.mp4
【问题讨论】:
每次使用有损编码器重新编码都会降低质量。这称为generation loss。
代损失是后续副本之间的质量损失或 数据的转码。任何降低质量的东西 复制时表示,并会导致进一步减少 制作副本的质量,可以被认为是一种形式 代损失。文件大小增加是生成的常见结果 损失,因为人工制品的引入实际上可能会增加 每一代数据的熵。
ffmpeg 将输入完全解码为原始视频和 PCM 音频,无论输入格式如何:
_______ ______________
| | | |
| input | demuxer | encoded data | decoder
| file | ---------> | packets | -----+
|_______| |______________| |
v
_________
| |
| decoded |
| frames |
|_________|
________ ______________ |
| | | | |
| output | <-------- | encoded data | <----+
| file | muxer | packets | encoder
|________| |______________|
然后它对原始视频进行编码,其中包括来自先前编码迭代的破坏性压缩伪影。质量不会保持不变,因为两代本质上是完全不同的视频。
【讨论】: