L
lovinger_2000
Unregistered / Unconfirmed
GUEST, unregistred user!
我用的是DSPack控件2.3版本[]
var
MpegFilter: IBaseFilter;
MpegAudioDecoder: IMpegAudioDecoder;
begin
MainForm.FilterGraph.FindFilterByName(StringToOleStr('MPEG Layer-3 Decoder'),MpegFilter);
MpegFilter.QueryInterface(IID_IMpegAudioDecoder,MpegAudioDecoder);
MpegAudioDecoder.put_DualMode(1);//左声道
//只要一调用put_DualMode(0),就提示有问题,如果没有这句播放就正常,但是这句是用来设置左右声道的嘛
//MpegAudioDecoder.put_DualMode(2);
MpegFilter := nil;
MpegAudioDecoder :=nil;
end;
说明一下:我的MPEG4是自己制作的,声道是独立的,但没有把视频和音频分开。
以上代码只要一调用MpegFilter对象的任何一个属性或者函数,就报错,我想肯定是MpegFilter.QueryInterface(IID_IMpegAudioDecoder,MpegAudioDecoder)这句有问题,我估计是传递了错误的参数IID_IMpegAudioDecoder,这个参数如果是用来播放MPEG格式就可以设定左右声道,但是播放MPEG4格式只要一设定左右声道就报错。我在DirectShow9.pas里面找了半天都没有找到应该对MpegFilter.QueryInterface(??,MpegAudioDecoder)传入什么参数,很急,谢谢大家的解答。
我只有这140分了,谢谢各位帮助
var
MpegFilter: IBaseFilter;
MpegAudioDecoder: IMpegAudioDecoder;
begin
MainForm.FilterGraph.FindFilterByName(StringToOleStr('MPEG Layer-3 Decoder'),MpegFilter);
MpegFilter.QueryInterface(IID_IMpegAudioDecoder,MpegAudioDecoder);
MpegAudioDecoder.put_DualMode(1);//左声道
//只要一调用put_DualMode(0),就提示有问题,如果没有这句播放就正常,但是这句是用来设置左右声道的嘛
//MpegAudioDecoder.put_DualMode(2);
MpegFilter := nil;
MpegAudioDecoder :=nil;
end;
说明一下:我的MPEG4是自己制作的,声道是独立的,但没有把视频和音频分开。
以上代码只要一调用MpegFilter对象的任何一个属性或者函数,就报错,我想肯定是MpegFilter.QueryInterface(IID_IMpegAudioDecoder,MpegAudioDecoder)这句有问题,我估计是传递了错误的参数IID_IMpegAudioDecoder,这个参数如果是用来播放MPEG格式就可以设定左右声道,但是播放MPEG4格式只要一设定左右声道就报错。我在DirectShow9.pas里面找了半天都没有找到应该对MpegFilter.QueryInterface(??,MpegAudioDecoder)传入什么参数,很急,谢谢大家的解答。
我只有这140分了,谢谢各位帮助