libx264和ffmpeg如何编码和解码H.264

时间:2017-02-06 15:47:08

标签: video encoding ffmpeg libx264

我想知道在H.264编码中究竟会丢失什么。我使用libx264对视频进行编码并使用ffmpeg对其进行解码,然后再使用libx264对生成的视频进行编码,使用相同的参数并对其进行第二次解码。我所期望的是第一和第二个解码视频的大小和外观必须相同,但是,它不是!例如,我在第一个编码帧中的第一个切片NAL单元中有13000个字节,在第二个编码帧中有12000个字节,并且它是奇数。因为帧中存在的任何有损信息应该在第一个编码过程中被消除,并且第二个编码应该是其结果相同的NAL单元的过程。我错了,或者在我的实施中的某个地方,我误解了?

1 个答案:

答案 0 :(得分:6)

这个问题无法回答。有损编解码器应该真正被称为有代表性的。像复印机一样,任何一代都会略有修改。了解"确切"的唯一方法将失去的是实际运行算法。现代压缩由几个步骤组成。运动估计/补偿,量化,环路滤波器和解块。并且在每个步骤中移除了多少信息由速率控制算法决定。根据参数和内容,这些步骤中的每一个都可能丢失甚至添加信息。甚至可能在编解码器的实现之间有所不同。