如何在Directshow中使用Xvid进行视频压缩? |
尚未結案
|
killghost
一般會員 發表:14 回覆:21 積分:7 註冊:2004-04-21 發送簡訊給我 |
|
japhenchen
高階會員 發表:51 回覆:444 積分:184 註冊:2003-07-23 發送簡訊給我 |
|
japhenchen
高階會員 發表:51 回覆:444 積分:184 註冊:2003-07-23 發送簡訊給我 |
你把DSPack2.34版的Demo\D6-D7\VideoCap调出来,在上面放置一个新的TFilter(DSPACK里的)控件,属性name设成VCompFilter, 属性FilterGraph留空,属性BaseFilter点击...进去选择你要用的压缩插件,XVID放在VideoCompressors的项目分类里,完整名称应该是XviD MPEG-4 Codec,选定后点击OK回到Form画面 主要Form的左下方有个Start的Button,把OnClick的事件调出来,会看到里面有一行注解着//Connect Video preview (VideoWindow)的RenderStream的过程
// now render streams with CaptureGraph as IcaptureGraphBuilder2 do begin // set the output filename SetOutputFileName(MEDIASUBTYPE_Avi, PWideChar(CapFile), multiplexer, Writer); // Connect Video preview (VideoWindow) if VideoSourceFilter.BaseFilter.DataLength > 0 then RenderStream(@PIN_CATEGORY_PREVIEW, nil, VideoSourceFilter as IBaseFilter, nil , VideoWindow as IBaseFilter); // Connect Video capture streams if VideoSourceFilter.FilterGraph <> nil then RenderStream(@PIN_CATEGORY_CAPTURE, nil, VideoSourceFilter as IBaseFilter, nil, multiplexer as IBaseFilter); // Connect Audio capture streams if AudioSourceFilter.FilterGraph <> nil then begin RenderStream(nil, nil, AudioSourceFilter as IBaseFilter, nil, multiplexer as IBaseFilter); end; end;把这两行红色RenderStream的第四个参数nil改成VCompFilter as IBaseFilter,然后编译这个程序。。。就可以达到你要的功能了 許下第一千零一個願望 有一天幸福會聽我的話 |
japhenchen
高階會員 發表:51 回覆:444 積分:184 註冊:2003-07-23 發送簡訊給我 |
|
killghost
一般會員 發表:14 回覆:21 積分:7 註冊:2004-04-21 發送簡訊給我 |
|
Azote
一般會員 發表:6 回覆:4 積分:2 註冊:2004-04-14 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |