视频编解码器

常见的编码器设置界面选项说明:

Microsoft RLE                                                                                                             |全格子效果,如果想来点特殊的可以尝试 ||

Microsoft video 1                     |||

Intel IYUV编码解码器                  |无法使用||

Intel IYUV编码解码器                  |||

Cinepak Codec by Radius               |可以忽视,录制的时候一直卡,看到就蛋痛 ||

DivX 6.8.5 Codec (4 Logical CPUs)     |体积小,测试视频时间1分钟容量48M左右,画面清晰流畅(推荐) ||

Helix YV12 YUV codec                  |体积较大,测试视频时间1分钟容量370M左右,画质细腻清晰流畅,录制时间长了和全帧(无压缩的)编码一样情况...(不推荐) ||

Huffyuv v2.1.1 - CCESP Patch          |体积较大,测试视频时间1分钟容量780M左右,画质细腻清晰流畅,录制时间长了和全帧(无压缩的)编码一样情况...(不推荐)高清录制推荐&HuffYUV&编码器)||

Microsoft windows media               |体积中等,测试视频时间1分钟容量70M左右,画面清晰流畅(推荐) ||

XviD MPEG-4 Codec                     |如果不是放大画面来看,基本同DivX,容量大小也相似,画面同样清晰流畅(推荐)||

ffdshow Video Codec                   |这个可以有很多种设置,总体效果不错,体积和画质上都很好,我测试了FFV1,测试视频时间1分钟容量190M左右,画质比DivX和Xvid都要好,而且录制时间长不损坏,录制高清的推荐!||

全帧(非压缩的)                      |无损压缩,录制出来的视频文件画质和PSP上的一模一样没压缩,无论画质和流畅度都是一流,一个1:46分钟的文件1.15G大小,可见效果,不过这个编码有个致命缺点.....录制的时间不能超过(约)3:30分 ,可能是限制了容量,一个3分钟的文件2G大小,估计超过2.5G的视频就损坏了(特别致命,所以如果录制的视频超过3:30分左右时间的话,建议别用这个编码,不然录出来的文件是损坏的,播放器无法播放软件无法编辑,等于你这次的录制白做了.)||

 

(自带编码在自带配置界面中按“配置”是没效果的,非系统自带的后安装的可以)

Indeo? Video 5.10:这个编码就不解释了,就马赛克多,流畅度可以,也不建议

Microsoft MPEG-4 Video C......:按顺序排这个3个编码分别为V1、V2、V3版,我测试了着3个编码效果感觉都差不多,无论是画质还是流畅度都比上面这两个编码要好,喜欢哪个看个人,本人感觉效果差不多 !

VP60 Simple Profile:一个字:卡(不推荐)

VP61 Advanced Profile:基本同上

VP62 Heightened Sharpne...:基本同上

VP70 General Profile:基本同上Microsoft Windows Media:体积中等,测试视频时间1分钟容量70M左右,画面清晰流畅(推荐)

常见的视频编码

  1. 1、Microsoft RLE 一种8位的编码方式,只能支持到256色。压缩动画或者是计算机合成的图像等具有大面积色块的素材可以使用它来编码,是一种无损压缩方案。Microsoft RLE视频编码器/解码器和Microsoft Video l类似,但前者是一种无损压缩方案。

  2. 2、Microsoft Video 1 用于对模拟视频进行压缩,是一种有损压缩方案,最高仅达到256色,它的品质就可想而知,一般还是不要使用它来编码AVI,因为目前对256色视频的需求实在少之又少。
  3. 3、Intel IYUV Codec 使用Intel IYUV Codec编码器所得图像质量极好,因为这种方式是将普通的RGB色彩模式变为更加紧凑的YUV色彩模式(计算机显示器使用RGB数值形式表示颜色,电视机使用YUV形式表示颜色,电视机所表现的颜色要比计算机显示器丰富得多)。如果想将AVI压缩成MPEG-I格式(即VCD),用他得到的效果比较理想,缺点是会占据很大的磁盘空间。
  4. 4.Cinepak Codec by Radius视频编码器/解码器 Cinepak Codec by Radius最初发布的时候是用在386PC上看小电影,因为这个解码器具有较高的数据压缩率和较快的播放速度。与其它视频压缩程序相比,采用这种编码器可以取得更高的压缩比和更快的回放速度。
  5. DivX 6.8.5 Codec (4 Logical CPUs) DivX 6通过添加称为“DivX媒体格式”(DMF)(带有.divx扩展名)的可选媒体封装格式,扩展了DivX在编解码器和播放器中的范围。 DivX视频编码器/解码器- MPEG-4 Low-Motion/Fast-Motion。DivX 是一款视频编解码器, 用于转码视频, 可将一部 DVD 影片压缩到原来的十分之一而保持清晰的画质. 实际与Microsoft MPEG-4 Video code是相当的东西,只是Low-Motion采用的固定码率,Fast-Motion采用的是动态码率,后者压缩成的AVI几乎只是前者的一半大,但质量要差一些。Low-Motion适用于转换DVD以保证较好的画质,Fast-Motion用于转换VCD以体现MPEG-4短小精悍的优势。DivX是一种将影片的音频由MP3来压缩、视频由MPEG-4技术来压缩的数字多媒体压缩格式。DivX由DivXNetworks公司发明,DivX配置CPU要求是300MHz以上、 内存要求64MB以上、8MB以上显存的显卡。DIVx视频编码技术使用MPEG-4压缩算法。采用DivX的视频文件小,图像质量好,一张CD-ROM可容纳120min的质量接近DVD的电影。DivX的竞争者有Microsoft的Windows Media Video系列,还有Apple的QuickTime、Xvid以及RealNetworks的RealVideo系列。 DivX 3.11/4.12/5.0 实际上就是DivX,原来DivX 3.11是为了打破Microsoft的ASF规格而非法破解微软产品而开发的所以不能商用,而开发组后来成立Divxnetworks公司骗涮了开源社区一道,把开源的 Open DivX中的 Encore 2闭源封成DivX 4 (以及后续的收费版本DivX 5) 等成了私有财产,最大的特点就是在编码程序中加入了1-pass和2-pass的设置,2-pass相当于两次编码,以最大限度地在网络带宽与视觉效果中取得平衡。
  6. WMV(Windows Media Video)是微软公司开发的一组数字视频编解码格式的通称,它是Windows Media架构下的一部分
  7. Xvid是一个开放源代码的MPEG-4视频编解码器,它是基于OpenDivX而编写的。Xvid是由一群原OpenDivX义务开发者在OpenDivX于2001年7月停止开发后自行开发的。Xvid支持多种编码模式,量化(Quantization)方式和范围控,运动侦测(Motion Search)和曲线平衡分配(Curve)等众多编码技术,对用户来说功能十分强大。Xvid的主要竞争对手是DivX。但Xvid是开放源代码的,而DivX则只有免费(不是自由)的版本和商用版本。 Open DivX 的时候,一开始是很像一个像模像样的开放原始码项目,很多人都被吸引过去一起开发,测试。直到后来,那几个家伙一夜之间露出骗子的本来面目了,把 Open DivX 的成果一股脑带走,变成了封闭源代码的 DivX4,而后进一步变成收费的DivX 5 了。本来很好的 Open DivX 被逼流产,不过也就促成了今天XviD 的诞生、发展和壮大。XviD 更可以说超越了 DivX 5,以更好的质量,更强的功能挑战着新一代的 MPEG4 应用战场。
  8. ffdshow是一套免費的视频編解碼軟體,可支援H. 264、FLV、WMV、MPEG-1、MPEG-2以及MPEG-4等格式視訊檔。 ffdshow本身並不包含媒體播放器,但各種媒體播放器都可以使用ffdshow進行解碼。DirectShow解码、编码器FFDShow是对一些codec(ffmpeg, xvid, andother)的封装,封装成了DirectShow和VFW的标准组件。ffdshow 使用libavcodeclibrary 以及其他各种开放源代码的软件包。FFDShow是一个支持Xvid、MPEG4-V3 MPEG4-V2以及DivX所有版本所制作的视频文件的播放软件,占CPU资源比较少,还有很多画面优化功能,让音频和视频播放更流畅!是播放DVD影片必备的工具。
  9. 5、Microsoft H.261和H.263 Video Codec 用于视频会议的Codec,其中H.261适用于ISDN、DDN线路,H.263适用于局域网,不过一般机器上这种Codec是用来播放的,不能用于编码。H.263提供了比H.261更好的画面质量。这两种编码器不是用来编码的,而是用来解码播放的。这两种编码器目前都是网络会议的标准格式,特点是低容量。
  10. 6.Intel Indeo Video视频编码器/解码器

      这种解码器目前具有Intel Indeo Video R3.2,Intel Indeo Video R4和Intel Indeo Video R5三个版本,是运用较为广泛的编码器。压缩比比Cinepak和Intel Indeo Video R3. 2大,可以适应不同带宽的网络,适适合于使用Intel公司MMX以上CPU的计算机,回放效果优秀。编码器版本越新,画面质量越好。

  11. 4、Intel Indeo Video R3.2 所有的Windows版本都能用Indeo video 3.2播放AVI编码。它压缩率比Cinepak大,但需要回放的计算机要比Cinepak的快。

5、Intel Indeo Video 4和5 常见的有4.5和5.10两种,质量比Cinepak和R3.2要好,可以适应不同带宽的网络,但必须有相应的解码插件才能顺利地将下载作品进行播放。适合于装了Intel公司MMX以上CPU的机器,回放效果优秀。如果一定要用AVI的话,推荐使用5.10,在效果几乎一样的情况下,它有更快的编码速度和更高的压缩比。

7、Microsoft MPEG-4 Video codec 常见的有1.0、2.0、3.0三种版本,当然是基于MPEG-4技术的,其中3.0并不能用于AVI的编码,只能用于生成支持“视频流”技术的ASF文件。

FAQ

Q:cvCreateVideoWriter+cvWriteFrame保存摄像头视频时,有的格式成功,有的格式失败。('X','V','I','D')格式下test,用鼠标拖动乱动窗口,保证关"cvcam window"窗口会引起(CV_Bridge_Test.exe)CMD窗口一起关闭(表示执行成功而非异常CV_Bridge_Test.exe失去响应)可得到正常可见的avi,否则为乱码文件或0字节文件。

//  codec = CV_FOURCC('x','v','i','d');// OK//MPEG-4 codec older

//      codec = CV_FOURCC('X','V','I','D') ;//OK//相对较旧的MPEG-4编码。如果要限制结果视频的大小,这是一个很好的选择。文件扩展名应为.avi。

//      codec = CV_FOURCC('I','4','2','0') ;//OK//未压缩的YUV编码,4:2:0色度子采样。这种编码广泛兼容,但会产生大文件。文件扩展名应为.avi

//      codec = CV_FOURCC('D', 'I', 'V', 'X') ;// OK//MPEG-4 codec

//      codec = CV_FOURCC('P','I','M','1') ;//fail//= MPEG-1 codec//MPEG-1编码。文件扩展名应为.avi。

//  codec = CV_FOURCC('M','P','4','V') ;//fail//另一个相对较旧的MPEG-4编码。如果要限制结果视频的大小,这是一个很好的选择。文件扩展名应为.mp4

//  codec = CV_FOURCC('X','2','6','4');////fail//一种比较新的MPEG-4编码方式。如果你想限制结果视频的大小,这可能是最好的选择。文件扩展名应为.mp4

//      codec = CV_FOURCC('F','L','V','1') ;//fail//此选项为Flash视频。文件扩展名应为.flv

//      codec = CV_FOURCC('M','J','P','G')  ;//fail// motion-jpeg codec

//      codec = CV_FOURCC('M', 'P', '4', '2')  ;// fail// MPEG-4.2 codec

//      codec = CV_FOURCC('D', 'I', 'V', '3')  ;// fail// MPEG-4.3 codec

//      codec = CV_FOURCC('U', '2', '6', '3')  ;//fail// H263 codec

//      codec = CV_FOURCC('I', '2', '6', '3')  ;//fail//  H263I codec

//      codec = CV_FOURCC('F', 'L', 'V', '1')  ;// fail//FLV1 codec

A:如果保证关"cvcam window"窗口会引起(CV_Bridge_Test.exe)CMD窗口一起关闭(表示执行成功而非异常CV_Bridge_Test.exe失去响应)可得到正常可见的avi,否则为乱码文件或0字节文件。不能播放的乱码文件其实可以通过工具转换成为可摆放的乱码文件。可能是本机上没有对应的编解码器。Opencv是使用微软的VFW来实现视频操作,查看源代码,发现opencv直接将CV_FOURCC 的值传给 VFW相关函数,未作修改。因此,可认定opencv理论上支持上述格式。虽然有这么多格式,但是使用opencv的cvCreateVideoWriter 中能够实际使用的值,依赖于 像操作系统注册了哪些解码器。如果使用了上面的某些标志而出错,特别是出现按一秒一秒保存图像时,请去下载相应格式的解码器进行安装。

生成文件占用空间最小的编码方式是 MPEG-4.2 codec,约为19MB。用红线段标识,对应在VideoWriter类的构造函数参数为CV_FOURCC('M', 'P', '4', '2') 。

 

最大的是MPEG-1 codec,用蓝线段标识,约为111MB。对应在VideoWriter类的构造函数参数为CV_FOURCC('P','I','M','1') ,所占磁盘空间是前者的5.7倍。所以如果需要24小时全天候录制监控,基于磁盘空间的考虑,可以优先使用MPEG-4.2的编解码方式。

 

参考:GUI介面的製作-視訊,AVI檔案儲存,多視訊裝置http://yester-place.blogspot.com/2008/06/gui5.html

Opencv CV_FOURCC 可能的 四字码 https://blog.csdn.net/yh880/article/details/7721530

DivX https://zh.wikipedia.org/wiki/DivX

YUV https://zh.wikipedia.org/wiki/YUV

Codecs list https://answers.opencv.org/question/100967/codecs-list/

opencv fails to open avi with ffdshow codec https://stackoverflow.com/questions/5009974/opencv-fails-to-open-avi-with-ffdshow-codec

FOURCC四字符码列表 https://blog.csdn.net/JellyLi2091/article/details/62219678

opencv fails to open avi with ffdshow codec https://stackoverflow.com/questions/5009974/opencv-fails-to-open-avi-with-ffdshow-codec

参见

  1. 视频编解码器- 维基百科