Xvid编解码色彩失真(偏色)问题及其解决

来源:互联网 发布:laravel nginx 编辑:程序博客网 时间:2024/05/01 02:10

### Date:2017/4/11

### Author: SoaringLee



     在之前的Xvid源码在Linux/Unix系统下编译过程中,遇到如下两个问题:

(1)对原始yuv视频采用xvid mpeg4编码器进行编码后,出现编码后的码流解码后的视频色彩失真问题。   

(2)但是比较遗憾的是,yuvplayer这个软件只有windows版本的exe,没有linux下的,所以对解码后得到的dec.yuv不能进行播放和验证解码的正确性。一般情况下,这里的编码和解码应该都是正确的。


      对于第二个问题,可以通过python脚本中的filecmp模块中的cmp函数来比较通过解码器在Linux下和windows下解码得到的yuv文件,来验证解码的正确性。对于yuvplayer在linux下的编译可能有些困难,这还涉及到界面。

      通过比较两个解码得到的yuv文件,>>filecmp.cmp('dec.yuv','dec_m.yuv')    >>True


     对于第一个问题,原因已经找到了。对于xvid mpeg4编码器xvid_encraw,默认采用的原始视频文件的色彩空间为yv12,然而一般yuv视频采用的是标准yuv色彩空间(I420)。这两个彩色空间都是YUV 420 planar的,唯一的区别是U、V的存储顺序不一样,I420是Y之后紧跟是U,然后是V;而yv12是Y之后紧跟的是V,然后是U。因此,编码之后的码流出现了偏色现象(偏蓝)。xvid解码器的输出文件的色彩空间默认采用的是I420。

因此,这个问题的根本原因是输入yuv的彩色空间的设置不当。


参考:http://blog.chinaunix.net/uid-1827018-id-4711434.html

0 0
原创粉丝点击