MediaCam:Copy frames in a stream file (RM, MPEG4, etc.) into BMP files, then enhance them with image average technique, or enlarge them with cubic interpolation.

作者:马健
邮箱:stronghorse@163.net
主页:http://stronghorse.yeah.net

前言
使用说明
    一、截取Real Movie (RM)媒体流
    二、截取MPEG 4媒体流
    三、批量放大
    四、图像平均
附录A 鸣谢
附录B 版本更新记录

前言

以前为了从动画VCD中截图,我曾开发过自带MPEG I、II解码器,能够直接从VCD中解码图像帧的工具软件--Mpeg2Jpeg。但是随着宽带网络的流行,各种流媒体格式(RM、MPEG4等)的动画也越来越常见,Mpeg2Jpeg已经不能满足实际需要。不过目前流媒体格式尚无统一标准,如果想编制一个能解各种流媒体的解码器,恐怕不是一个免费软件能够做到的事。幸好现在两个主流的流媒体播放器--Real Player和Windows Media Player均提供了方便的OCX控件,可以在程序中调用这些控件对流媒体文件进行解码、播放,然后再从播放窗口中截图即可。在此思想指导下,再从Mpeg2Jpeg中引进了相应的技术,最终产生了现在的MediaCam:

  1. 能够按照指定的频率,将媒体流(RM、MPEG4)中的图像帧截取为BMP文件。
  2. 采用“图像平均”技术,对截取的画面进行补偿,提高质量。
  3. 能够将指定目录下的所有文件批量放大到2倍、3倍,或800*600、1024*768。由于本程序采用三次样条插值技术对图像放大造成的失真进行补偿,可以获得比Photoshop 6.01更好的放大效果。不过MediaCam没有图像处理功能,如果需要编辑图像,请用Photoshop等图像编辑工具。

与其它软件相比,MediaCam具有以下优点:

  1. 超级解霸、PowerDVD等软件在播放流媒体时也能截图,但一次只能截一张,不能连续截。而MediaCam可以按指定的频率连续截图。
  2. HyperSnap等专用截图工具虽然能够连续截图,但是它们在截图时完全是站在旁观者的立场上的,也就是说,即使截图、存盘需要消耗时间,播放器也不会停下来等它,因此截图的频率不可能太高,一些关键帧也可能会被漏掉。而MediaCam由于将播放器控件嵌入自身,因此可以对播放过程进行控制,在存盘时可以暂停播放动作(Real Player),或用慢镜头播放(Windows Media Player),因此可以以更高的频率截图。

但程序在使用时也有以下限制:

  1. 在使用本程序前,系统中必须先安装Real Player、Windows Media Player及其插件,并保证它们工作正常。这两个播放器不能播放或播放不正常的流媒体文件,用本程序也不可能播放出来。
  2. 由于采用Intel Image Processing Library (IPL)完成图像放大功能,本程序只能在支持MMX指令集的机器上运行。
  3. 由于采用的是截屏技术,因此:a. 在工作前请先将你的显示设置更改为24位或32位真彩,否则截取出来的图像色彩不能保证效果。b. 截图过程中不可以移动播放窗口,或用其它窗口遮挡播放窗口。
  4. 流媒体的播放和截取是以金钱为支撑的,在配有高速CPU、高速硬盘、大内存、高速显卡的机器上,截取频率和截取质量会高一些,反之则低一些。
  5. 如果万一WMP图像截取失败,即截出来的图片一片黑,可以在Windows的“开始”菜单中点“运行”,运行程序dxdiag.exe后,在“显示”页中点“禁用”DirectShow硬件加速。截完后再启动硬件加速即可。

如果您发现程序的bug,欢迎与我联系

注意:

MediaCam是一个Freeware,因此您没有为它付费的义务,也没有使用它的义务,更没有更改它或它的附件的权利;我没有为MediaCam提供服务的义务,也没有为使用MediaCam的后果承担责任的义务。但如果您喜欢它,您可以在不更改任何信息,也不添加、删减任何附件的情况下,出于非商业目的对它进行复制。如果要将它用于商业目的,或在您的网站对它进行转载,请与我联系,否则保留追究一切责任的权利。

如果你用MediaCam制作出了精彩壁纸,欢迎与我分享你的得意之作,或交流使用心得。

使用说明

一、截取Real Movie (RM)媒体流

启动 MediaCam 后,显示出主界面,一般操作过程是:

  1. 点击“选择”按钮,选择保存截取下来的文件的目录。
  2. 点击“源文件”按钮,打开RM文件。
  3. RM文件打开后将自动播放,播放到合适的位置点击“开始录像”按钮即可开始截图。截完后点“停止录像”按钮即可。
  4. 平时的播放控制可以用控制条上的按钮进行控制。

二、截取MPEG 4媒体流

选项卡点到“WinMediaPlayer”页,除多了一个调整截图时播放速率的控件外,其它操作与截RM媒体流相同。在慢速机器上截图时降低播放速率,可以多截几张,不过图像效果可能会差一点。

三、批量放大

具体操作步骤是:

  1. 选择“源文件所在目录”,再选择“目标文件存放”。
  2. 选择“放大倍率”。
  3. 点“开始”按钮,开始放大。

四、图像平均

“图像平均”技术的原理是这样的:
从数字信号的角度来看,产生媒体流时有损压缩造成的碎片、毛刺、色块等,可以看做是在正常信号中混入了随机噪声信号,消除随机噪声信号最简单的方法就是统计平均。具体到这里则是:对屏幕上的一个短暂定格来说,人眼看上去可能是同一幅图像,但对媒体流来说,却是多幅近似的图像帧,将这些图像帧全部截取下来,然后对它们逐点取平均,生成新的图像,自然就把偏离正常值的噪声过滤掉。平时正常播放时的画面总觉得比静态画面质量好,其实是人眼自然进行了这种平均处理。

从原理上可知,“图像融合技术”具有以下局限:
1. 可以消除或减低有损压缩算法本身对图像质量造成的影响,但对放大失真无能为力。
2. 从统计角度讲,降噪质量与样本数有关,样本越多降噪效果越好,因此只能处理定格镜头。
3. 从实际使用效果看,碟版动画由于图像比较稳定,因此降噪效果较好;录像带版动画由于磁带变形等会造成图像不稳定,定格镜头中甚至会出现整体画面轻微漂移,因此融合后图像会比较模糊。
4. 最终融合出来的图像质量,不太可能比正常播放时人眼看到的动态效果更好。

具体操作步骤是:

  1. 用ACDSee浏览一下源目录下的内容,删除多余文件,只留下与欲截取的定格镜头相关的文件。
  2. 选择“源文件所在目录”,再选择“目标文件”。为了保证质量,减少后续处理时的信息衰减,选择目标文件时的“保存类型”最好选择为“Bmp Files”。
  3. 点“开始”按钮,开始平均。如果“800*600”或“1024*768”选项被选中,则平均结果会直接放大到所需的尺寸。
  4. 如果需要截取多个定格镜头,在完成一个后将源目录下的所有文件删除,然后重复步骤1~3。
  5. 启动Photoshop,用Automate Batch功能,一次对Tgt目录下的所有图像进行色彩平衡或对比度平衡。
  6. 如果对图像质量要求甚高,可以用Photoshop对生成的图像进行细部编辑。一般我都会进行曲线调节,曲线形状为轻微的S型,上半弧用于消除图像中残留的碎片,下半弧用于巩固边线,使画面上的线条看起来更坚实一些。

注意事项:

  1. 上面说的虽然是“定格”,但是动画片中的定格和一般影片中的定格略有不同,有时候一段连续动作也可以看作几个定格图片的反复重复,如动画片中的对话镜头,经常就是嘴唇在动,其它部分不动。这时有可能经过筛选后取到更多的样本。
  2. JPEG是一种有损压缩算法,反复压缩会造成图像信息的衰减,因此在最后定稿前,建议用无损的BMP格式保存图像,定稿后再转成JPG图像。就我的体会,ACDSee的转换要比PhotoShop好一些,成批转换也比较容易,注意转换时将JPG的图象质量系数设高一点(缺省为65,我一般设为96),否则质量难以保证。
  3. 上面说的直接取平均、放大的方法其实是一种偷懒的方法,因为在原始尺寸下有些图像缺陷是看不出来的。如果要追求更好一点的效果,应该先把样本批量放大,再筛选一次样本,然后取平均。

附录A 鸣谢

本程序的的媒体播放部分采用了RealNetworks公司提供的Real Player控件和Microsoft公司提供的Windows Media Player控件,JPEG编码部分采用了Independent JPEG Group(独立JPEG小组)发布的JPEG LIB,图像放大部分采用了Intel Image Processing Library (IPL),具体放大算法参见IPL说明书中的附录B部分。

附录B 版本更新记录

v 0.02 beta
图像平均部分改用浮点运算,提高运算精度,减小舍入误差。

v 0.01 beta
1、新增功能:存当前图像。
2、错误修正:直接点播放器的暂停、终止按钮,录象功能不会停止。
做到现在RM的截图应该问题不大,但是WMP的截图就要靠运气了,所以还是beta版。好在RP也可以播放DIVX压制的AVI文件,所以问题还不是很大。

v0.00 beta
1、提供Real Player控件的播放、截取功能
2、提供Windows Media Player的播放、截取功能。
3、提供图像平均、批量放大功能。