知识大全 在C#中利用DirectX实现声音播放
Posted 知
篇首语:不飞则已,一飞冲天;不鸣则已,一鸣惊人。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 在C#中利用DirectX实现声音播放相关的知识,希望对你有一定的参考价值。
在C#中利用DirectX实现声音播放 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
我感觉声音的播放比较简单 我们从播放声音开始 为什么我这么觉得?我也不知道 这里是展示最简单的DirectX播放声音的例子 我尽量省略了无关的代码 最后的代码只有 行 够简单了吧? 准备工作 安装了DirectX SDK(有 个DLL文件) 这里我们只用到MicroSoft DirectX dll 和 Microsoft Directx DirectSound dll 一个WAV文件 (这样的文件比较好找 在QQ的目录里就不少啊 这里就不多说了 )名字叫SND WAV 放在最后目标程序的同个目录下面 开始写程序啦 随便用个UltraEdit就好了 引入DirectX 的DLL文件的名字空间 using Microsoft DirectX; using Microsoft DirectX DirectSound; 建立设备 在我们导入的Microsoft DirectX DirectSound空间中 有个Device的类 这个是表示系统中的声音设备 Device dv=new Device(); 设置CooperativeLevel 因为Windows是多任务的系统 设备不是独占的 所以在使用设备前要为这个设备设置CooperativeLevel 调用Device的SetCooperativeLevel方法 其中 第一个参数是一个Control 第二个参数是个枚举类型 在这个程序中 Control我随便弄了个参数塞进去(很汗吧!) 如果在windows程序中 可以用this代替 第二个参数就是优先级别 这里表示优先播放 dv SetCooperativeLevel((new UF()) CooperativeLevel Priority); 开辟缓冲区 对于上面的声音设备 他有个自己的缓冲区 叫主缓冲区 系统中 一个设备有唯一的主缓冲区 由于windows是多任务(又是这个!) 所以可以有几个程序同时利用一个设备播放声音 所以每个程序都自己开辟一个二级缓冲区 放自己的声音 系统根据各个程序的优先级别 按照相应的顺序分别去各个二级缓冲区中读取内容到主缓冲区中播放 这里 我们为SND WAV开辟一个缓冲区 其中 第一个参数表示文件名(傻瓜都看出来了!) 第二个就是需要使用的设备 SecondaryBuffer buf=new SecondaryBuffer(@ snd wav dv); 接下来就可以播放啦 第一个参数表示优先级别 是最低的 第 个参数是播放方式 这里是循环播放 buf Play( BuffERPlayFlags Looping); 由于命令行程序没有消息循环 执行完代码就退出了 所以 我们需要暂停程序 Console Read(); 关键的部分已经完了 这里只是交代一下刚才的那个倒霉的new UF() 是什么东西 这个完全是为了应付SetCooperativeLevel的参数要求 我不知道这样做有什么附作用(各位如果因此把声卡烧了…………) class UF:Form 代码写完啦~~~ 下面可以编译了 这里编译比较复杂点 csc /r:directX\\MicroSoft DirectX dll;directX\\Microsoft Directx DirectSound dll dxsnd cs 这里 我把 个DLL文件放在当前目录的directx目录下(这个是我自己建的 你只需要指出这 个文件的位置就可以了 ) 顺便把我的目录结构说明一下 | | dxsnd cs | snd wav | <directx> | | MicroSoft DirectX dll | Microsoft Directx dll 下面是完整代码 //dxsnd cs using System; using Microsoft DirectX; using Microsoft DirectX DirectSound; using System Windows Forms; namespace test class test public static void Main(string [] args) Device dv=new Device(); dv SetCooperativeLevel((new UF()) CooperativeLevel Priority); SecondaryBuffer buf=new SecondaryBuffer(@ snd wav dv); buf Play( BufferPlayFlags Looping); Console ReadLine(); class UF:Form cha138/Article/program/net/201311/12004相关参考
C#中利用mediaplayer打造mp3播放器 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
利用JavaApplet播放声音文件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 使用Appl
知识大全 用hdmi线连接电脑和电视,怎样在电视中播放出声音
用hdmi线连接电脑和电视,怎样在电视中播放出声音这个是设置问题!在电脑声音-播放设备这里设备,把默认改成HDMI输出音频(原来是电脑输出的音频的。)电视连接电脑,如何从电视中播放声音?HDMI线带有
什么软件可以在mp3中添加背景音乐,怎样在软件里添加背景音乐一.在程序中直接播放声音文件在VC++中的多媒体动态连接库中提供了一组与音频设备有关的函数。利用这些函数可以方便地播放声音。最简单的播放声音
如何在Java应用程序中播放声音文件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 简介 现有
因为java强大的类库解决这个问题并不困难只是API的调用问题而已不过不同的调用也有区别 很多人讲要使用JFM不过我懒得去安装所以另寻他法网上提供最多的方法就是利用Applet中的AudioCl
VB.NET中声音的播放 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 由VB升级为NET后有些人
知识大全 ppt设置第几张幻灯片后音乐停止播放可是仍然继续播放
ppt设置第几张幻灯片后音乐停止播放可是仍然继续播放可能没设置好。PPT2007中插入音乐方法:打开PPT,单击“插入”,单击“声音”,单击“文件中的声音”,在弹出的对话框“插入声音”中插入文件中的音
电脑所有播放器都没有声音是怎么回事?解决办法:开始----运行----services.msc----在"名称"找到"WindowsAudio"----鼠标左键选中它----单击鼠标右键----选择"
知识大全 电脑没有声音,每次播放音乐的时候总显示请检查你的声卡设置,是什么原因
电脑没有声音,每次播放音乐的时候总显示请检查你的声卡设置,是什么原因?可能是声卡驱动出问题了吧,右键我的电脑,单击硬件,选择设备管理器,在弹出的窗口中看看声音控制器有没有被打叉,如果就是声卡驱动出问题