关于利用direct show做VCD播放软件中,声道控制问题!(100分)

  • 主题发起人 主题发起人 lxmzm
  • 开始时间 开始时间
L

lxmzm

Unregistered / Unconfirmed
GUEST, unregistred user!
如果利用delphi的媒体播放控件时,可以得到deviceID,利用mci很容易实现左右声道的互换等功能
在使用direct show进行播放VCD时,那又如何得到deviceID呢?如果不能,又如何利用MCI或direct shound
来进行左右声道的互换等功能的实现?

请大虾门指点迷津!thanks!
 
direct 编程???????
关注!!!!!!!!!!!!!!
 
GraphBuilder.QueryInterface(IID_IBasicAudio, BasicAudio);
BasicAudio.put_Balance(xxx);
 
GraphBuilder.QueryInterface(IID_IBasicAudio, BasicAudio);
好象只能控制左右平衡吧!如:左声道最大,右声道无声音等,以上lxmzm提到的我想是:
如何同时播放左声道或右声道的声音。
 
coldease说的对,我太大意了.
关注.
 
我好象和你提出是个问题
 
就这里的问题,我想问各位大侠一下,如何实现象超级解霸一样在播放VCD的时候可以
控制伴音输出和视频输出。
 
用Dspack控件
http://www.progdigy.com/download/dspack1.05.rc1(20-11-2001).zip

var
MpegFilter: IBaseFilter;
MpegAudioDecoder: IMpegAudioDecoder;
begin

DSFilterGraph21.FilterGraph2.FindFilterByName('MPEG Audio Decoder',MpegFilter);
MpegFilter.QueryInterface(IID_IMpegAudioDecoder,MpegAudioDecoder);
MpegAudioDecoder.put_DualMode(AM_MPEG_AUDIO_DUAL_LEFT);
MpegFilter := nil;
MpegAudioDecoder :=nil;
end;

 
luket还是没实现左右声道互换
 
To:Luket
这个程序代码只适用于 VCD ,左声道,右声道和立体声播放。不适用于其它媒体。要
理解这个接口可以:
procedure TMainForm.SpeedButton6Click(Sender: TObject);

procedure ChangeAudio(S:String);
var
BaseFilter: IBaseFilter;
begin

FilterGraph.FilterGraph2.FindFilterByName(StringToOleStr(S), BaseFilter);
ShowFilterPropertyPage(MainForm,BaseFilter);
end;


begin

ChangeAudio('MPEG Audio Decoder');
//MPEG1 声音设置,比如 VCD 等。
ChangeAudio('MPEG Layer-3 Decoder');
//MP3 声音设置,比如 MPEG4 等。
end;


To:LeeChange
要实现 DirectShow 的声音左右对换可以在 DirectSound Filter 之前 添加一个
TFM Audio Filter。这个你用一下 Luket 说的控件自带的 GraphEdit.Exe.就会明白的。
 
不太明白,具体怎么实现一个声道的声音从两个声道中发声?
或者怎么找FilterGraph的DeviceID?
 
我只知道用MCI播放VCD的时候切换伴唱/原唱,用drictshow俺也不知道:(
 
我想知道怎样用directshow实现画面的颜色控制
 
要实现真的软解压播放并控制"各种"视频文件的左右声道,必须象豪杰一样写一个自已的解码器
才行。当然最好是先了解清楚各种视频文件的格式再写。我个人认为DIRECTX它只是提供了
一个开发WINDOWS多媒体程序的接口,现在的DIRECTX8。0也只是提供的MPEG1 和 MPEG2的
支持,而且局限性很大,象大码流的MPEG2(*.vob)有时播放就不正常。即使实现了软解压MPEG2,
它在图像方面的处理非常依赖CPU和显卡的性能,在性价比方面并不占优。因此,我认为如
果是作VOD系统,用户没有特别的要求,用硬解压(解压卡现在很便宜)较好些。

to:风云再起
DSPACK控件可以实现你的要求,我用它完成了一个软解压的VOD系统并且实现了你说的功能。
 
我也想知道这个问题
 
DS还是很好用的
 
procedure TForm1.Button4Click(Sender: TObject);
var
MpegFilter: IBaseFilter;
MpegAudioDecoder: IMpegAudioDecoder;
begin

with ((MediaPlayerx1.DefaultInterface as IActiveMovie).FilterGraph as IFilterGraph)do

FindFilterByName(StringToOleStr('MPEG Audio Decoder'), MpegFilter);
MpegFilter.QueryInterface(IID_IMpegAudioDecoder,MpegAudioDecoder);
MpegAudioDecoder.put_DualMode(AM_MPEG_AUDIO_DUAL_RIGHT);
MpegFilter := nil;
MpegAudioDecoder :=nil;
end;

 
to silicon:

MediaPlayerx1 指的是什么?
 
后退
顶部