Delphi开发多媒体播放音轨问题小结
最近经常在论坛看到关于切换音轨和频道的问题。这里做个总结。可以转载。让菜鸟受益!转载时,作者希望能在一定程度上保留原文信息!
1.声道和声道是什么?
在早期的VCD时代,一个媒体文件只有一个轨道。所以“音轨”这个词并不经常被人们提及。VCD媒体文件中的伴唱或原唱只能通过切换左右声道来实现。
音轨是DVD附带的“产品”。在DVD(MPEG2-2格式)媒体文件中,用一个音轨来记录一种语言(VOD中经常提到“原唱”和“伴唱”)。
2.如何切换音轨?
在这里,我推荐使用“摩根流切换器”过滤器。
通常,Filter上实现的IAMStreamSelect接口中的Enable方法用于切换音轨。
示例:
var
obj:IAMStreamSelect;
begin
if filter . query interface(iid _ iamstreamselect,obj)= s _ ok then
begin
obj . ENABLE(index { audio track },AMSTREAMSELECTENABLE _ ENABLE);
obj:= nil;
end;
end;
3.如果你换频道?
要切换频道,需要在音频渲染器滤镜上获取IBasicAudio接口(提示:龙卡的IBasicAudio接口是在硬件解码器滤镜上获取的)。
您可以通过使用该接口的put_Balance方法来切换通道。
传入值描述:-10000-右声道
10000-左声道
0-立体声
4.我如何知道媒体文件的音轨数?
一般来说,播放媒体文件时,需要文件来源->分割器。
这取决于分离器过滤器。获取的方法也不同。
例如,如果有一些带有几个音频轨道的MPEG分离器,将创建几个音频输出引脚。在这种情况下,您可以获得分离器滤波器上音频输出引脚的数量(即音频轨道的数量),一些MPEG分离器将只输出一个音频输出引脚,无论有多少个音频轨道。在这种情况下,IAMStreamSelect接口已经在拆分器上实现。在这个接口上调用Count方法来获取磁道数。
5.提出的问题。
切换频道后,只有一个扬声器发声。建议使用“TBalncer音频通道均衡控制”。
位律师回复
0条评论