媒体知识一点点(1)———编解码

来源:互联网 发布:招聘流程优化方案 编辑:程序博客网 时间:2024/06/08 04:58

     1. x264是一种免费的、具有更优秀算法的符合H.264/MPEG-4 AVC视频压缩编码标准格式的编码库。x264压缩出的视频文件在相同质量下要比xvid压缩出的文件要小,或者也可以说,在相同体积下比xvid压缩出的文件质量要好。它符合GPL(General Public License,是一份GNU通用公共授权)许可证。
  ■ 采用CAVLC/CABAC多种算法编码
  ■ 内置所有macroblock格式(16x16, 8x8, and 4x4 )
  ■ Inter P:所有的分割块(从16x16到4x4 )
  ■ Inter B:分割块从16x16到8x8
  ■ 码率控制:恒定的分层编制,单次或多次的ABR压制,可选的VBV压制
  ■ 场景剪切侦测
  ■ 支持B-frame
  ■ 能够任意编制B-frame命令行
  ■ 无损模式
  ■ 8x8和4x4的格式能够进行翻转或旋转
  ■ 自定义精确的矩阵模板
  ■ 可在多个CPU平行编码
  ■ 隔行扫描
 

      2. CoreAVC, CoreCodec的CoreAVC高清H.264视频解码器是基于已经被用于AVCHD、蓝光光盘和HD-DVD中的MPEG-4 Part 10标准构建的。H.264是下一代的视频编码标准,而CoreAVC™是目前公认世界上最快的H.264软解码器。

      在graphedit中,可以看到选项卡:包括:

      ■ Input formats
  这个选项决定了CoreAVC能解码哪些类型的H264视频文件(依据的是视频文件的FourCC)。h264、x264、avc1等)
  ■ Output formats
  这个选项决定了CoreAVC优先输出哪种色彩空间。CoreAVC按指定的顺序依次尝试色彩空间直到被视频渲染器所接受。建议:将YV12设为第一项,YUV2设为第二项。
  Levels H264允许按两种不同的Luminance range进行编码。默认使用的是TV levels,该levels将黑色设定为16,而将白色设定为235,并允许blacker-than-black和whiter-than-white levels。另一种选择是full-range luminance,也叫做PC levels,将黑色设定为0,白色设定为255。H264视频默认使用TV levels,但也可以在视频流里指定full-range标记,表明它是PC levels的。只当你碰到了不正确编码的视频流或视频渲染器发生错误时,你才有必要变更选项。
  ■ Input levels(Levels H264允许按两种不同的Luminance range进行编码)
      TV levels(16-235)——总是假定视频流采用的是TV levels(并允许blacker-than-black和whiter-than-white levels)
  PC levels(0-255)——总是假定视频流采用的是PC levels(H264视频默认使用TV levels)
  Autodetect——使用视频流里的full-range标记来决定采用何种Luminance range。

  ■ Output levels,当CoreAVC转换色彩空间的时候,将会受到这个选项的影响,同Input level
  ■ Deblocking
  这个选项决定了CoreAVC如何处理H264规范中的deblocking。Deblocking会消耗很多的cpu资源,如果你的机器不够快的话,你可以关掉某些帧的Deblocking,但这样可能会降低视频质量。
  Standard ——按照H264规范进行精确的deblocking
  Skip B-frame ——当解码B帧的时候,忽略deblocking
  Skip all ——完全忽略deblocking
  只有在编码的时候开启Deblocking,解码的时候才能进行Deblocking。也就是说,如果视频源本身在编码的时候没有Deblocking,即便你在解码器中设置开启Deblocking,解码器也会视而不见。
    如果你的机器能够流畅播放视频,建议你选Standard Deblocking,把是否进行Deblocking交由CoreAVC自己判断。
    如果你的机器不能流畅播放视频,就依次选第二个或第三个试试,说不定就能流畅了,但相应的,播放质量可能会有所下降。资源占用率从上往下依次降低,画质也是依次降低。

  ■ Deinterlacing, 这个选项决定了CoreAVC如何处理隔行视频
  None(Weave)——只是把两个连续的场拼成一帧,这对于运动图像(制作源为胶片电影的除外)就会产生了拉丝和梳齿问题。如果视频是逐行的,建议选这个。
  single field——对一帧图像中的两场做叠加、求均值等运算,以消除梳齿。这种方法对于静止图像帧比较有效,运动图像blend后会有残影。
  Bob——用单个场的上下行求均值来填充成为帧,适用于运动图像。一般情况下,如果你的视频是隔行的,1080i,选这项。
  Hardware——交由显卡进行反交错处理,近一两代ati或nvidia的显卡都有比较好的反交错算法,如果新显卡,显卡支持,选这项。

  ■ Aggressive deinterlacing,这个选项决定了CoreAVC采用何种方法来检测隔行视频
  不勾选——只使用picture timing SEI和POC numbers来检测隔行视频。不过并不是每个编码器都会按这种方法正确的标示隔行视频。
  勾选——除了上述两种方法外,如果CoreAVC检测到视频流里应用了某些隔行编码工具(比如MBAFF,PAFF)的话,也会将这段视频作为隔行视频处理。

  ■ Crop 1088 to 1080
  H264的视频尺寸总是16的倍数,因此就会在视频的底部补上8个像素,将1080凑成1088。h264规范提供了一系列的裁剪参数,将多余的8个像素标记为不显示。但有些H264编码器在编码1080视频的时候不能正确指定这个参数。
  不勾选——不裁剪视频
  勾选——当输入的视频是1088像素的时候,就将底部的8个像素裁剪掉

  ■ Force VMR AR correction
  不勾选——不改变VMR设置
  勾选——使用VMR滤镜来保持视频宽高比,一般情况下,宽高比的校正是由播放器来负责的。这个选项通常是不勾选的。
  建议:常用的播放器如mpc或kmp都有保持视频宽高比的选项,所以这项通常是不勾选的。
  ■ Preferred Decoder
  勾选后可以使CoreAVC有更高的优先级来处理H.264编码的视频

 

     3. DirectShow
     FFDShow是一款全能的DirectShow解码、编码器,可以解压缩常见的视频格式和几乎所有的音频格式, 它还提供了丰富的加工处理选项,可以锐化画面,调节画面的亮度,它还支持诸多字幕格式.它能让音频和视频播放更流畅,可支持H.264、FLV、WMV、MPEG-1、MPEG-2以及MPEG-4等格式视频档。
     ffdshow采用libavcodec解编码库和一些免费的开放的软件开发包解码大多数常规的格式,例如:MPEG-4 (包括视频解码Xvid, 3ivx, 和全部版本的DivX).Flash Video, H.263。

     4. 硬解码 MPC----比较好的h264高清解码

     支持硬解高清(HD)视频 MPEG2(CLVSD) 和 H.264&VC-1(FFDShow) 编码。

     选型卡codecs:可以设置解码选项,其中h264/avc(dxva) vc1(dxva)是视频硬件加速选项。

    根据DXVA的规范制定,硬件加速解码可分为四个级别,它们由高到低分别是:
  VLD(bitstream方面的处理)>IDCT(帧内压缩)>MoComp(帧间压缩)>PostProc(显示后处理)
       GeForce 8000和Radeon HD 2000开始进入目前最高的VLD加速。
      不过值得一提的是,由于NVIDIA的高清硬件加速功能基于Video Pocesser单元设计,而最早出现的GeForce 8800系列(G80核心产品)没有开放此功能单元设计,所以NVIDIA真正进入VLD加速是从2007年4月发布的GeForce 8600/8500系列开。