请高手指点如何用directshow把实时采集图像压缩为mpeg-1文件?(采集卡不带压缩功能) (100分)

O

oldfly

Unregistered / Unconfirmed
GUEST, unregistred user!
请高手们给点思路嘛!
最好是给点源代码,先谢了!
 
要想存成MPEG文件必须用相关的软件进行转换,用纯软件实时采集MEPG文件是不可能的,
它的压缩速度太慢了,软件跟本就跟不上。
 
用directshow中的Filter好象能实现,但我不知怎么做!有高手来指点指点吗?
 
为何不压缩为MPEG4呢?
divx可以用呀!
 
to coolsoft:
能给我压缩为MPEG4,divx的源代码吗?
最好是dspack2.1实例videocap中实现!
能解决我把我还有的所有分都给你,先谢了!

 
where todo
wnload dspack2.1? 3x

my QQ: 2225256
 
oldfly:
其实用divx或者其它的一些xvid压缩很简单!
首先要得到video compressor codec
你可以通过video compressor 来取得其过滤器实例
加入avi mux过滤器,加入file write过滤器
然后再加入到filtergraph中来,
1.你可以用renderstream来智能连接
2.或者connect(pin1,pin2)来人工建立连接
OK,run!你可以得到压缩的AVI文件!
 
to coolsoft:
video compressor codec有好多啊,请问压成avi用哪一个要好些,请给点源代码嘛!



 
到WWW.palyicq.com上去,有好多啊
 
oldfly:
用divx吧!
 
to coolsoft:
能给我准确定位divx的方法吗?
就象定位crossbar用
var SysDev:TSysDevEnum;

SysDev:=TSysDevEnum.Create(AM_KSCATEGORY_CROSSBAR);
SysDev.SelectIndexCategory(0);

得到crossbarfilter一样!

我用 SysDev:= TSysDevEnum.Create(CLSID_VideoCompressorCategory);
得到的驱动太多,我都乱不清楚要用哪一个才行!请教了!

 
sysdev:=tsysdevenum.create(clsid_videocompressorcategory);
得到sysdev之后,可以采用遍历的方法来取得
先加一个filter,命名为mycompress,并指定其filtergraph为窗体中的filtergraph控件.
var
filter_compress:ibasefilter;
for i:=0 to sysdev.countfilters-1do

begin

if pos(sysdev.filters(i).friendlyname,'divx')>0 then

begin

mycompress.moniker:=sysdev.getmoniker(i);
break
end;

end;

mycompress.queryinterface(ibasefilter,filter_compress);
然后再按一般的建立filtergraph的方法来建立。
剩下不用我多说了吧!

 
我列举出来的compressor中好象没有含divx名的驱动!请问要用divx还需要装什么?
我已经安装了directx8.1了!
 
你可以在网上下载,用google或者百度搜索一下!
它是一个免费的编解码器!
 
to coolsoft:
问题解决了!谢谢了!
想再问2个问题:
1、如我想在安装包中含进divx,要如何办?(不想用divx的那个安装程序)
2、我想在程序中把采集的视频存到光盘上,有什么好用的刻录控件
或程序吗?(只刻录数据文件到光盘)
 
1.将divx的dll包含 进你的安装程,并注册!
2.你可以搜索下刻录的相关控件,这类控件挺多的!
 
记得给分呀!:)!
 
呵呵,给分了!
想再请教CDWriterXP的操作,我装上了,但不知怎么用,能给我点源代码吗?
 

Similar threads

I
回复
0
查看
585
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
610
import
I
顶部