欢迎来到天天文库
浏览记录
ID:39890482
大小:66.50 KB
页数:9页
时间:2019-07-14
《第16讲 游戏中的声音处理技术》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、第16讲游戏中的声音处理技术FMOD1.DirectShow介绍 DirectShow是一个windows平台上的流媒体框架,提供了高质量的多媒体流采集和回放功能。它支持多种多样的媒体文件格式,包括ASF、MPEG、AVI、MP3和WAV文件。DirectShow整合了其它的DirectX技术,能自动地侦测并使用可利用的音视频硬件加速,也能支持没有硬件加速的系统。 DirectShow大大简化了媒体回放、格式转换和采集工作。但与此同时,它也为用户自定义的解决方案提供了底层流控制框架,从而使用户可
2、以自行创建支持新的文件格式或其它用途的DirectShow组件。 DirectShow是建立在组件对象模型(COM)上的,因此当你编写DirectShow应用时,你必须具备COM客户端程序编写的知识。对于大部分的应用,你不需要实现自己的COM对象,DirectShow提供了大部分你需要的DirectShow组件。2、介绍几个接口IGraphBuilder *m_pGraph; //IGraphBuilder接口提供了生成FilterGraph相关的方法IMediaControl *m_pMediaCo
3、ntrol; //IMediaControl接口提供了控制流经FilterGraph数据流的相关方法IMediaEventEx *m_pEvent; //IMediaEventEx继承自IMediaEvent,提供了从FilterGraph管理器获取事件消息的方法IMediaSeeking *m_pMediaSeeking; //IMediaSeeking提供了控制流的播放位置和播放速度的方法 IBasicAudio *m_pBasicAudio; //IBasicAudio接口提供了声音和声道的部分处理
4、,如音量大小和音量均衡等IBaseFilter *m_pMpegAFilter; //在用新的过滤器(Filter)控制声道的时候用到的接口IMpegAudioDecoder *m_pMpegAudioDec; //一个Filter接口,提供了提取和分配声道功能有了这些接口,我们就可以在自己的类中进行封装了。注意的是要用这些接口来编程需要设置一些环境,如include和lib3、编写一个DirectShow应用程序大体需要三个步骤:1.创建一个FilterGraphManager的实例2.使用FilterG
5、raphManager创建一个filtergraph,此时,需要已经具备所有必需的filter。3.使用FilterGraphManager控制filtergraph和通过这些filter的流,在这个过程中,应用程序会收到FilterGraphManager发送的事件第一步,首先,需要调用CoInitialize来作初始化,然后调用CoCreateInstance创建FilterGraphManager//初始化COM接口HRESULThr=CoInitialize(NULL);if(FAILED(hr))
6、{ TRACE("ERROR-CouldnotinitializeCOMlibrary."); returnFALSE;}hr=CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC, IID_IGraphBuilder, (void**)&m_pGraph); 退出的时候别忘了:CoUninitializ
7、e();二、设置需要的接口(m_pMediaControl,m_pBasicAudio,m_pMediaPosition,m_pMediaSeeking) m_pGraph->QueryInterface(IID_IMediaControl,(void**)&m_pMediaControl);m_pGraph->QueryInterface(IID_IMediaPosition,(void**)&m_pMediaPosition);m_pGraph->QueryInterface(IID_IBasicA
8、udio,(void**)&m_pBasicAudio);m_pGraph->QueryInterface(IID_IMediaSeeking,(void**)&m_pMediaSeeking); m_pMediaSeeking->GetPositions(&m_curpos,&m_stoppos); m_filelength=m_stoppos-0;//得到媒体文件的总大小——帧数三、
此文档下载收益归作者所有