您的当前位置:我要购书网>在线阅读>Delphi/Perl

使用delphi开发多媒体播放音轨问题的faq(原创)

来源:互联网  作者:我要购书网信息中心  发布:我要购物网收集整理  发布时间:2006-8-31 人气:343

最近一段时间,在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 音频声道均衡控件”。作者: CoolSlobEmail&MSN: CoolSlob@163.comQQ: 7975379
相关文章
· 使用 system.web.mail发送邮件
· 使用delphi开发多媒体播放音轨问题的faq(原创)
· 使用directshow播放摄像头的基类
· 使用dumpbin命令
· 使用mouse_event来模拟一次选中文本框中的文本
· 使用eclipse进行swt编程(2)
· 使用md5校验和算法保护文件
· 使用directshow播放mpeg的基类
· 使用vc6进行ado编程,使用sql server 20..
· 使用vc++进行tray区编程
热点文章
%>
· creating user controls
· 提高fastreplace速度 (fstrrep.pas)
· asc ii 完整码表及简介
· 自动生成拼音(汉字反查到拼音)
· sql2000无法安装的解决办法
· 浏览器集成教学 自定义浏览器
· vc++技术内幕(第四版)笔记(第7章)
· mysql5.0中文乱码解决方案
· sql server日期计算
· vc下利用ado连接access数据库
我要啦免费统计
 淘宝旺旺:我要购书网上书店『图书目录
本购书中心地址: 杭州市延安路111号清波商厦南楼D座(总部) 上海市闸北区老沪太路网上购书中心(沪部),  邮编:310002
电子邮件:books@51goushu.com  经营许可证编号:沪ICP备06038574号
版权所有 2003-2008 © All Rights Reserved .购书网