有关Motion JPEG压缩解压的问题(100分)

D

Dick

Unregistered / Unconfirmed
GUEST, unregistred user!
各位,本人目前的工作涉及视频采集卡,目的是将从视频采集卡采集过来的不带压缩的视频和
声卡采集的声音文件联合起来,以Motion JPEG的方式进行实时压缩,写成AVI保存到硬盘上。
当我就这个问题在网络上进行搜索时,发现有许多商用的CODEC库,能够达到很高的性能(如
在NTSC 640*480模式下实现30fps的压缩/解压)。所以我决定在这些库的基础上进行开发。经过
比较,我决定在LeadTools、Pegasus以及Morgan这三个CODEC库中进行选择。按照他们网站的
说法,均针对MMX/SSE进行了高度优化,达到30fps都没有问题。
接下来我一一下载了这三个库,结果发现都没有任何文档告诉我怎么做,最多就是在Readme里
说几句,要基于DirectShow的Filter来做,Video For Windows也可以。除此之外再也没有任何
说明,弄得我好不头痛。
目前我正再Jedi站点提供的DirectShow代码上进行研究,看看怎样把CODEC接口挂到自己的程序
中。一有收获我随时会在这里贴出来,希望有机会与大家一起研究探讨。
我也曾经考虑基于OpenDivX做MPEG4压缩,可惜我的任务要求图象指令很高,尤其是AVI中的单帧
影像,因此看来Motion JPEG压缩是唯一的途径。如有可能,我还打算考虑Motion LosslessJPEG
压缩。小波压缩就免了,我辈数学功底太差,再说小波主要追求压缩速度和压缩比,质量会损失
较大的。
我的工作平台是Windows 2000 Perofessional,采集卡是980,显卡为nVida系列。目前我的基本
想法是使用DirectSHow进行采集、压缩和回放。
几个CODEC的站点地址是:
Pegasus PicVideo: www.jpg.com
LeadTools CODEC: www.leadtools.com
Morgan CODEC: www.morgan-multimedia.com

最后,我必须承认,这些CODEC库都是收费的,因此我在下载其Evaluation版的时候,顺便也
搜索了这些CODEC的注册号和Crack,而且很不幸,还一一找到了...........
所以,对此有兴趣的朋友又不愿意再花力气找的话,可以发邮件给我: dengkun@msn.com

不管怎么说,期待着做过类似工作的朋友的指导,尤其是Delphi多媒体高手们请不吝出招!
 
没有人关注吗?今天我下载了几个基于DirectShow的Delphi例子,开始对DirectShow的研究。可以
肯定的是,用DirectShow是对的,因为我已经用PicVideo CODEC压缩了一段AVI。原始文件是
MPEG4的,使用DivX解开流,然后再用MJPEG压缩。原来MPEG4的文件大小为9兆,转为MJPEG压缩
后为34兆,压缩耗时时间大约1分多种(原MPEG4影像长度为4分钟多)。
目前的问题是:
1:影像是颠倒的; 2:声音的Filter始终连不上,因此转换后没有声音;
正在继续努力中.........
 
directShow 我没有仔细看过. 我认为用vfw 也可以直接实现啊. 初始化VFW库. 打开一个Avi文件
创建一个Avi流. 选择一个压缩codec 再创建一个压缩流. 就可以一桢一桢的写进去了啊,

其他的没有仔细看过. 不过你参考一下这个软件 virtualDUB 专门用来转换AVI 和avi的简单编辑的.
很好用 网上有源码可以看看 不过是c++的. )
 
VFW封装的层次太高了,实际上也是基于DirectShow来实现的。我主要是在AVI生成中需要一些
选择,比如将画面尺寸减小等等。所以还是要基于DirectShow来做。VirtuakDub我知道,只是
没有研究过,下载一个好好看看吧。
 
你如果用 DX8 SDK 里的 graphedit里的 Video Compressor 里可以找到你安装的
Motion-Jpeg Compressor 的话,在 Graph Edit 里先实验好,然后把 MotionJpeg
压缩器Filter 的 IID 记录下来(在Insert Filter 里看他的属性),然后在程序里
手工建立。然后 IFilter.FindPin('Pin名字'),再IGraphbuilder.Connectpin .
否则只好用 IAvistream 和 VideoCompressManager 来一帧帧压缩和写入了。
如果是初学 DirectShow 的话,最好建议你用Filter Graph 来了解这些。

 
过年了,给两位送分吧,祝二位新年愉快。谢谢二位的回答。
 
我现在也开始搞directShow 了.要实现采集压缩,存储,编辑等功能,有机会一起探讨吧.
我的地址: xwings@263.net
 
好的,我的邮箱是dengkun@msn.com , 多多交流啊。
 
顶部