知道这个问题没有人愿意回答,但还是要问:DirectX如果控制WMV视频文件中音频的卡拉OK效果?(300分)

S

silicon

Unregistered / Unconfirmed
GUEST, unregistred user!
知道这个问题没有人愿意回答,但还是要问:DirectX如果控制WMV视频文件中音频的卡拉OK效果?
有很多方法,包括这里都有的.但都不是我想要的.
WMV的左声道是国语,右声道是粤语. 用waveoutGetVolume这个可以实现,但是,播左声道的时候,右边就没有声音了,播右边的时候,左边就没声音了.不是我要的.
procedure SetVCDTrack(FG: TFilterGraph;
DualMode: Byte);
// AM_MPEG_AUDIO_DUAL_MERGE = 0;
// AM_MPEG_AUDIO_DUAL_LEFT = 1;
// AM_MPEG_AUDIO_DUAL_RIGHT = 2;
// TDSAudioModel = (amMerge, amLeft, amRight);
var
MpegFilter: IBaseFilter;
MpegAudioDecoder: IMpegAudioDecoder;
enumFilters: IEnumFilters;
begin

MpegFilter:= nil;
MpegAudioDecoder:= nil;
enumFilters:= nil;
If Succeeded((FG as IFilterGraph).EnumFilters(enumFilters)) then

begin

While EnumFilters.Next(1, MpegFilter, nil)=S_OKdo

begin

if Succeeded(MpegFilter.QueryInterface(IID_IMpegAudioDecoder, MpegAudioDecoder)) then

MpegAudioDecoder.put_DualMode(Integer(DualMode));
end;

end;

enumFilters := nil;
end;

这个对于MPEG格式的是可以,便对于WMV就不行了.
 
先占个位置,实在没人回答就把分数给我吧。
 
MD,都什么年代了,战争都开打了!还急着要分!要那么分做什么?帮我搞定了!我所有分都给你!
 
对不起,帮不上您,只有帮您提前了[:(]
 
提前也要谢谢你!

我知道很多人都是在用Audio.ax,有些有这个Filter的定义吗?
 
怎么又搞起了这个?你这样写谁能帮到你呀.
 
为什么不能帮我呀?
 
wmv文件不一定全部能切换声道的,不过要看你的压缩方法了.
可以看看我们的网站上的试用程序及歌曲
www.ekl168.com
 
有人知道就说一说嘛?大哥大姐们,帮助一下嘛!
 
WMV也是走wave通道的,所以用waveOut...这样的函数没问题,两个声道可以各自独立控制。如果一个声道有声另外一个就没声了,一定是你没有理解waveOutGetVolume返回的音量双字节的结构(兄弟我也犯过同样错误).看看SDK帮助吧。
 
哈真的这个东东没人回答,我原来问了好多也没人应,唉!
silicon, 要是搞得定,记得分享一下哦,我把我的分都给你,哈哈
 
顶部