如果我ffmpeg以相同的比特率连续编码两次,会发生什么情况

时间:2019-06-03 20:06:55

标签: video ffmpeg encode

我有一个原始divx视频(3500k),我将其编码为mp4容器中的h.264。例如,我选择使用1000 k对其进行编码,以使质量保持接近原始水平。如果我以相同的比特率对其编码一次又会怎样?从理论上讲,质量应该保持不变吗?

CREATE TABLE #tabletest  (somedata VARCHAR(100) NOT NULL); 
CREATE TABLE #tablefloat (FLoatdata FLOAT); 
INSERT INTO #tabletest   (somedata) VALUES ('  5 215 243  '); 

INSERT #tableFloat SELECT CAST(REPLACE(t.somedata,' ','') AS FLOAT) FROM #tabletest AS t;

1 个答案:

答案 0 :(得分:2)

质量将保持不变

使用有损编码器重新编码每次都会降低质量。这称为generation loss

  

代丢失是指后续副本或   数据转码。降低质量的任何东西   复制时的代表性,会进一步减少   制作副本的质量,可以视为一种形式   世代损失。文件大小增加是生成的常见结果   损失,因为人工制品的引入实际上可能会增加   每一代数据的熵。

ffmpeg完全将输入解码为原始视频和PCM音频,无论输入格式是什么:

 _______              ______________
|       |            |              |
| input |  demuxer   | encoded data |   decoder
| file  | ---------> | packets      | -----+
|_______|            |______________|      |
                                           v
                                       _________
                                      |         |
                                      | decoded |
                                      | frames  |
                                      |_________|
 ________             ______________       |
|        |           |              |      |
| output | <-------- | encoded data | <----+
| file   |   muxer   | packets      |   encoder
|________|           |______________|

然后对原始视频进行编码,其中包括来自先前编码迭代的破坏性压缩伪像。由于这两代视频本质上是完全不同的,因此质量将不会保持不变。