关于视频编解码的一些疑问,求大神解答
資深大佬 : zpole 7
视频编码成 I P B 帧到变成一个文件这个过程中,有没有其他的压缩过程?编码后 I 帧是 rgb 或 yuv 等原始数据的图片还是像 jpg 之类的还有其他压缩?有没有可能不解码,在保留 p b 帧原始数据(即关于 i 帧的相对变化)时,换掉 i 帧,应用场景比如视频抠图,背景静止时只要 i 帧抠图换背景是不是就够了?
大佬有話說 (7)
视频编码成 I P B 帧到变成一个文件这个过程中,有没有其他的压缩过程?编码后 I 帧是 rgb 或 yuv 等原始数据的图片还是像 jpg 之类的还有其他压缩?有没有可能不解码,在保留 p b 帧原始数据(即关于 i 帧的相对变化)时,换掉 i 帧,应用场景比如视频抠图,背景静止时只要 i 帧抠图换背景是不是就够了?
比如说,你用 JPG 编码器编码一张图片,编码完的数据就是「 JPG 」了。
同理你用 x265 编码器编码一张图片,编码完的数据就是「 h.265 」了。
PB 帧存储的是残差,你只替换 I 帧当然是可以的,替换完以后新的残差都会基于新的 I 帧来渲染。平时如果视频文件损坏,有时候你会看到有一段会出现画面一小部分在移动或者显露出原本画面的效果,这就是典型的参考帧没了,所以拿 buffer 里错误的帧作参考对象的结果。
实际的视频里背景一般是不会静止的,会有摄影噪声。如果你提前用滤镜对噪声做过滤,或者在编码的时候在残差判定里直接跳过小容量残差的话,倒是可以做到的。但是画面编码的最小单位是块( h.264 是 mb,h.265 是 cu ),所以最少也是一块一块生效的。
要达到你说的那种效果,替换帧的做法是非常不现实的,研发成本高得惊人,效果稀烂。