中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Delphi > 综合文章
Delphi开发多媒体播放音轨问题小结
作者:CoolSlob 时间:2006-08-21 03:44 出处:天极网 责编:月夜寒箫
              摘要:Delphi开发多媒体播放音轨问题小结
 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 音频声道均衡控件”。
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有