Delphi开发多媒体播放音轨问题小结

Delphi开发多媒体播放音轨问题小结,第1张

Delphi开发多媒体播放音轨问题小结,第2张

最近经常在论坛看到关于切换音轨和频道的问题。这里做个总结。可以转载。让菜鸟受益!转载时,作者希望能在一定程度上保留原文信息!

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音频通道均衡控制”。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » Delphi开发多媒体播放音轨问题小结

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情