科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道应用软件Delphi开发多媒体播放音轨问题小结

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文是关于Delphi开发多媒体播放音轨常见问题的一些汇总,供参考应用。

作者:CoolSlob 来源:blog 2007年9月14日

关键字: Delphi 多媒体 音轨 小结

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共19页)

1、什么是声(音)轨、声道?

在早先的VCD时代,一个媒体文件只有一个音轨。故“音轨”一词不常被人们提及。VCD媒体文件中的伴唱或原唱,只有通过切换左右声道来实现。

音轨是随着DVD而来的“产物”。在DVD(MPEG2格式)媒体文件中,一个音轨来记录一个语种(在VOD中常说的“原唱”和“伴唱”)。

2、如何切换音轨?

在这里,我推荐使用“Morgan Stream Switcher”Filter。音轨的切换,一般是使用Filter上实现的IAMStreamSelect接口中的Enable方法。例:

var

 obj: IAMStreamSelect;

begin

 if Filter.QueryInterface(IID_IAMStreamSelect, obj) = S_OK then

 begin

obj.Enable(Index{音轨}, AMSTREAMSELECTENABLE_ENABLE);

obj := nil;

 end;

end;

3、如果切换声道?

切换声道,需要获取Audio Renderer Filter上的IBasicAudio接口(提示:神龙卡的IBasicAudio接口在hardware decoder Filter上获取)。使用该接口的put_Balance方法即可实现切换声道。

传入值说明:-10000 右声道

10000 左声道

 0 立体声

4、如何知道媒体文件的音轨数?

一般来说,在播放媒体文件时,都需要File Source -> Splitter。视Splitter Filter不同。获取的方法了也不尽相同。

比如,有一些MPEG的Splitter,有几个音轨,就会创建几个Audio Output Pin.这种情况,你可以取得该Splitter Filter上的Audio Output Pin的数量(就是音轨数量)还有一些MPEG的Splitter,不论有多少音轨,只会输出一个Audio Output Pin.这种情况,该Splitter上已经实现了IAMStreamSelect接口。调用该接口上的Count方法即可获得音轨数量。

5、引出的问题

在切换声道之后,只有一个音箱发声。推荐使用“TBalncer 音频声道均衡控件”。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章