网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > Delphi精品代码 > 正文

使用Delphi开发多媒体播放音轨问题的FAQ

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务
最近一段时间,在CSDN和DFW上常看见问于切换音轨和切换声道的问题。在这做一个小结。大家可以转载。让菜鸟收益! 转载时,作者希望在最大程度上保持原有信息!

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 音频声道均衡控件”。
  • 上一篇资讯: 用Delphi6开发Webservices
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师