试着在RenderStream添加下这一段 //音频视频同步
if CaptureGraph.QueryInterface(IID_IAMGraphStreams, pGS) = 0 then
begin
pGS.SyncUsingStreamOffset(TRUE);
pGS := nil;
end;
IF multiplexer.QueryInterface(IID_IConfigAviMux,pConfigMux) = 0 then
begin
pConfigMux.SetMasterStream(1);
pConfigMux := nil;
end; IF multiplexer.QueryInterface(IID_IConfigInterleaving,pinterleave) = 0 then
begin
pinterleave.put_Mode(INTERLEAVE_CAPTURE);
pinterleave := nil;
end; //AudioSourceFilter.QueryInterface(IID_IAMBufferNegotiation, pNeg);
FindInterface(nil, @MEDIATYPE_Audio, AudioSourceFilter as IBaseFilter, IID_IAMBufferNegotiation, pNeg);
prop.cbBuffer := 4096; // 此处为一帧音频数据的大小
prop.cBuffers := 32; // 设置缓冲区的帧数
prop.cbAlign := 16;
pNeg.SuggestAllocatorProperties(prop);
if CaptureGraph.QueryInterface(IID_IAMGraphStreams, pGS) = 0 then
begin
pGS.SyncUsingStreamOffset(TRUE);
pGS := nil;
end;
IF multiplexer.QueryInterface(IID_IConfigAviMux,pConfigMux) = 0 then
begin
pConfigMux.SetMasterStream(1);
pConfigMux := nil;
end; IF multiplexer.QueryInterface(IID_IConfigInterleaving,pinterleave) = 0 then
begin
pinterleave.put_Mode(INTERLEAVE_CAPTURE);
pinterleave := nil;
end; //AudioSourceFilter.QueryInterface(IID_IAMBufferNegotiation, pNeg);
FindInterface(nil, @MEDIATYPE_Audio, AudioSourceFilter as IBaseFilter, IID_IAMBufferNegotiation, pNeg);
prop.cbBuffer := 4096; // 此处为一帧音频数据的大小
prop.cBuffers := 32; // 设置缓冲区的帧数
prop.cbAlign := 16;
pNeg.SuggestAllocatorProperties(prop);
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货