好东西大家分享:
解决方法如下,用DSPACK2.2开发
在界面上放一个Filter,Filter的FilterGraph指向已放置好的TFilterGraph,再点BaseFilter,然后在出现在Base Filter Editor中选择DirectShow Filters中的MPEG Audio Decoder,确定
实现代码如下:
procedure TForm1.SetBands(Bands:integer);
var
MpegAudioDecoder:IMpegAudioDecoder;
begin
if succeeded(Filter1.QueryInterface(IMpegAudioDecoder, MpegAudioDecoder))then
begin
MpegAudioDecoder.put_DualMode(Bands););//0 ALL 1 Left 2 Right
MpegAudioDecoder := nil;
end;
end;
有关资料如下:
// Values for DualMode
const
AM_MPEG_AUDIO_DUAL_MERGE = 0;
AM_MPEG_AUDIO_DUAL_LEFT = 1;
AM_MPEG_AUDIO_DUAL_RIGHT = 2;type
IMpegAudioDecoder = interface(IUnknown)
['{B45DD570-3C77-11D1-ABE1-00A0C905F375}']
function get_FrequencyDivider(out pDivider: LongWord): HRESULT; stdcall;
function put_FrequencyDivider(Divider: LongWord): HRESULT; stdcall;
function get_DecoderAccuracy(out pAccuracy: LongWord): HRESULT; stdcall;
function put_DecoderAccuracy(Accuracy: LongWord): HRESULT; stdcall;
function get_Stereo(out pStereo: LongWord): HRESULT; stdcall;
function put_Stereo(Stereo: LongWord): HRESULT; stdcall;
function get_DecoderWordSize(out pWordSize: LongWord): HRESULT; stdcall;
function put_DecoderWordSize(WordSize: LongWord): HRESULT; stdcall;
function get_IntegerDecode(out pIntDecode: LongWord): HRESULT; stdcall;
function put_IntegerDecode(IntDecode: LongWord): HRESULT; stdcall;
function get_DualMode(out pIntDecode: LongWord): HRESULT; stdcall;
function put_DualMode(IntDecode: LongWord): HRESULT; stdcall;
function get_AudioFormat(out lpFmt: TMPEG1WaveFormat): HRESULT; stdcall;
end;
以上只能解决MPEG1编码的声道问题,MPEG4的还没有找到办法,欢迎大家发表看法。
解决方法如下,用DSPACK2.2开发
在界面上放一个Filter,Filter的FilterGraph指向已放置好的TFilterGraph,再点BaseFilter,然后在出现在Base Filter Editor中选择DirectShow Filters中的MPEG Audio Decoder,确定
实现代码如下:
procedure TForm1.SetBands(Bands:integer);
var
MpegAudioDecoder:IMpegAudioDecoder;
begin
if succeeded(Filter1.QueryInterface(IMpegAudioDecoder, MpegAudioDecoder))then
begin
MpegAudioDecoder.put_DualMode(Bands););//0 ALL 1 Left 2 Right
MpegAudioDecoder := nil;
end;
end;
有关资料如下:
// Values for DualMode
const
AM_MPEG_AUDIO_DUAL_MERGE = 0;
AM_MPEG_AUDIO_DUAL_LEFT = 1;
AM_MPEG_AUDIO_DUAL_RIGHT = 2;type
IMpegAudioDecoder = interface(IUnknown)
['{B45DD570-3C77-11D1-ABE1-00A0C905F375}']
function get_FrequencyDivider(out pDivider: LongWord): HRESULT; stdcall;
function put_FrequencyDivider(Divider: LongWord): HRESULT; stdcall;
function get_DecoderAccuracy(out pAccuracy: LongWord): HRESULT; stdcall;
function put_DecoderAccuracy(Accuracy: LongWord): HRESULT; stdcall;
function get_Stereo(out pStereo: LongWord): HRESULT; stdcall;
function put_Stereo(Stereo: LongWord): HRESULT; stdcall;
function get_DecoderWordSize(out pWordSize: LongWord): HRESULT; stdcall;
function put_DecoderWordSize(WordSize: LongWord): HRESULT; stdcall;
function get_IntegerDecode(out pIntDecode: LongWord): HRESULT; stdcall;
function put_IntegerDecode(IntDecode: LongWord): HRESULT; stdcall;
function get_DualMode(out pIntDecode: LongWord): HRESULT; stdcall;
function put_DualMode(IntDecode: LongWord): HRESULT; stdcall;
function get_AudioFormat(out lpFmt: TMPEG1WaveFormat): HRESULT; stdcall;
end;
以上只能解决MPEG1编码的声道问题,MPEG4的还没有找到办法,欢迎大家发表看法。
解决方案 »
- 请教线程使用TWebBrowser控件问题
- TGPImage加载png文件流为什么会报错?
- 朋友们做没做过office里的COM插件? 急 (分不多,全给)
- Tidhttp发送数据时url编码问题
- 不知哪位有好的捕捉键盘操作的源程序.小弟急用啊.多谢了.
- 我装完delphi7后,要求注册,不注册就跳出了,该怎么解决?
- 关于变量
- 如果作一个点击按钮便弹出新的窗口dephi程序,需要另外新建一个from2窗口吗?本人刚学dehpi是菜鸟,还请多照顾
- 有没有谁知道dbgrid控件中各个小栅格中某一个小栅格失去焦点时将触发什么时件?
- 谁有方法做此?
- 程序用ADO连SQL SERVER,但会出现死锁的问题。
- 代码转化,将下面的VC程序变为pascal语言,怎么去实现,我只有100分了。。
我试过了的,不一定要是Direct9.0,Direct5.0的也可以
和MPEG1的做法差不多,只是没有图像而已