D
Daisw
Unregistered / Unconfirmed
GUEST, unregistred user!
如何处理录制的影像文件不连贯的问题,具体描述如下:
我是采用Directshow做的采集USB视频图像(分辨率 720*576),并进行录制。
1、录制时就连USB视频图像显示都很慢,而且图像显示不连贯断断续续。录制的文件(文件格式:*AVI)回放也同样是断断续续。
2、录制时资源占用非常严重(CPU 将近占用100%)
3、录制的文件没有被压缩,文件非常大。
请高手帮忙指点指点。急呀!
处理的代码如下:
procedure TfrmMain.sbCaptureClick(Sender: TObject);
var
multiplexer: IBaseFilter;
Writer: IFileSinkFilter;
sRec:string;
begin
sRec:=sRecPath+'/'+formatdatetime('yymmdd-hhnnss',now)+'.avi';
FilterGraph.Stop;
with FilterGraph as ICaptureGraphBuilder2do
begin
SetOutputFileName(MEDIASUBTYPE_Avi, StringToOleStr(sRec), multiplexer, Writer);
RenderStream(@PIN_CATEGORY_CAPTURE, nil, VideoSourceFilter as IBaseFilter,nil, multiplexer as IBaseFilter);
end;
FilterGraph.Play;
edtRec.Text:=sRec;
sbStop.Visible:=true;
sbCapture.Visible:=false;
end;
我是采用Directshow做的采集USB视频图像(分辨率 720*576),并进行录制。
1、录制时就连USB视频图像显示都很慢,而且图像显示不连贯断断续续。录制的文件(文件格式:*AVI)回放也同样是断断续续。
2、录制时资源占用非常严重(CPU 将近占用100%)
3、录制的文件没有被压缩,文件非常大。
请高手帮忙指点指点。急呀!
处理的代码如下:
procedure TfrmMain.sbCaptureClick(Sender: TObject);
var
multiplexer: IBaseFilter;
Writer: IFileSinkFilter;
sRec:string;
begin
sRec:=sRecPath+'/'+formatdatetime('yymmdd-hhnnss',now)+'.avi';
FilterGraph.Stop;
with FilterGraph as ICaptureGraphBuilder2do
begin
SetOutputFileName(MEDIASUBTYPE_Avi, StringToOleStr(sRec), multiplexer, Writer);
RenderStream(@PIN_CATEGORY_CAPTURE, nil, VideoSourceFilter as IBaseFilter,nil, multiplexer as IBaseFilter);
end;
FilterGraph.Play;
edtRec.Text:=sRec;
sbStop.Visible:=true;
sbCapture.Visible:=false;
end;