四种C#实现播放声音的方法,如DirectX ,SoundPlayer, Windows Media Player

news/2024/10/22 14:28:59/

文章来自学IT网:http://www.xueit.com/html/2009-09/21_4598_00.html

第一种是利用DirectX 

1.安装了DirectX SDK(有9个DLL文件)。这里我们只用到MicroSoft.DirectX.dll 和 Microsoft.Directx.DirectSound.dll
2.引入DirectX 的DLL文件的名字空间:


 using Microsoft.DirectX;
 using Microsoft.DirectX.DirectSound;
3.建立设备
Device dv=new Device();
4.设置CooperativeLevel。因为windows是多任务的系统,设备不是独占的
SecondaryBuffer buf=new SecondaryBuffer(@"snd.wav",dv);
5.开辟缓冲区SecondaryBuffer buf=new SecondaryBuffer(@"snd.wav",dv);
6.接下来就可以播放啦。第一个参数表示优先级别,0是最低的。第2个参数是播放方式,这里是循环播放。
 buf.Play(0,BufferPlayFlags.Looping);


第二种是利用Microsoft speech object Library

/// <summary>
/// 播放声音文件
/// </summary>
/// <param name="FileName">文件全名</param>
public void PlaySound(string FileName)
{//要加载COM组件:Microsoft speech object Library
 if (!System.IO.File.Exists(FileName))
 {
  return;
 }
 SpeechLib.SpVoiceClass pp = new SpeechLib.SpVoiceClass();
 SpeechLib.SpFileStreamClass spFs = new SpeechLib.SpFileStreamClass();
 spFs.Open(FileName, SpeechLib.SpeechStreamFileMode.SSFMOpenForRead, true);
 SpeechLib.ISpeechBaseStream Istream = spFs as SpeechLib.ISpeechBaseStream;
 pp.SpeakStream(Istream, SpeechLib.SpeechVoiceSpeakFlags.SVSFIsFilename);
 spFs.Close();
}


第三种:引用SoundPlayer

System.Media.SoundPlayer sndPlayer = new System.Media.SoundPlayer(Application.StartupPath+@"/pm3.wav");
sndPlayer.PlayLooping();


第四种:利用Windows Media Player

新建一个C#的Windows Form工程(Windows应用程序),并且定义两个菜单按钮(menuItem1,menuItem2)。
  选择菜单中的“工具”中的“自定义工具箱(添加/移除工具箱项)”,在自定义工具箱的窗口中,点击展开“COM 组件”项,选中“Window Media Player”选项。确定后在“工具箱”中便会出现“Windows Media Player”这一项,然后再将其拖至Form上,调整大小,系统在“引用”中自动加入了对此dll的引用,AxMediaPlayer就是我们使用的Namespace与class。
  在属性栏中设置好此控件的一些属性,为了方便,这里我把AutoStart设置成为true(其实默认是true),只要FileName被设置(打开了文件),则文件将会自动播放。完整代码如下:
private void menuItem1_Click(object sender, System.EventArgs e)
{
 OpenFileDialog ofDialog = new OpenFileDialog();
 ofDialog.AddExtension = true;
 ofDialog.CheckFileExists = true;
 ofDialog.CheckPathExists = true;
 //the next sentence must be in single line
 ofDialog.Filter = "VCD文件(*.dat)|*.dat|Audio文件(*.avi)|*.avi
   |WAV文件(*.wav)|*.wav|MP3文件(*.mp3)|*.mp3|所有文件 (*.*)|*.*";


 ofDialog.DefaultExt = "*.mp3";
 if(ofDialog.ShowDialog() == DialogResult.OK)
 {
 // 2003一下版本 方法 this.axMediaPlayer1.FileName = ofDialog.FileName;
 this.axMediaPlayer1.URL= ofDialog.FileName;//2005用法
 }
}
这里使用的是微软的播放器,大家也可以试试Winamp的控件,如果你只需要播放声音而不需要显示,你只要把AxMediaPlayer的Visible属性设置为false就可以了。

http://www.ppmy.cn/news/567216.html

相关文章

计算机用户注册表修改,WindowsServer2012 注册表修改用户的连接数

取消登陆时自动拔号: 在HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Network/RealModeNet下修改右边窗口中的 WindowsServer2012R2配置DFS&#xff0c;出现以下错误&#xff1a; 无法完成 复制文件夹想到 请参阅 错误 选项卡了解具体错误。 VBS脚本修改注册…

C#播放背景音乐的五种方法

Speech speech是一个朗读器&#xff0c;我们写一个文本text或者string&#xff0c;speech可以朗读发音&#xff0c;支持异步操作使用方便&#xff0c;推荐使用。 Speech两种使用方法 使用.NET类库和系统API: using System.Speech.Synthesis;SpeechSynthesizer synth new Spe…

Winamp栈溢出漏洞研究

Winamp作为一款在90年代最主流的音乐播放器&#xff0c;到现在仍有大量的忠实粉丝。当然也存在很多漏洞。下面具体分析的就是打开软件的更新历史信息而触发的一个缓冲区溢出漏洞。 0X01漏洞重现 正常的whatsnew.txt文件位于Winamp文件夹中&#xff0c;保存的是软件的更新历史信…

c# 播放声音的四种方法

第一种是利用DirectX 1.安装了DirectX SDK&#xff08;有9个DLL文件&#xff09;。这里我们只用到MicroSoft.DirectX.dll 和 Microsoft.Directx.DirectSound.dll 2.引入DirectX 的DLL文件的名字空间&#xff1a; using Microsoft.DirectX; using Microsoft.DirectX.DirectSou…

Fmod学习3将音频文件变音播放

本文在FMOD学习2基础 简介&#xff1a;本次变音大量借鉴 xxx学院的教学 。我这里做下笔记 参考官方demo&#xff1a;effects.cpp dsp_effect_per_speaker.cpp 这里的代码是基于FMOD1的代码 MainActivity package com.example.fmy.selfplaymusic;import android.content.Co…

如何使Winamp看起来像iTunes

Winamp is a terrific, customizable media player that keeps getting better with each new release. If you are tired of the default skins included with it, then join us as we show you how to make Winamp look like iTunes. Winamp是一个了不起的&#xff0c;可自定…

winamp 5.55下载_免费下载:Winamp 5.8 Beta已正式发布,现在对Llama友好

winamp 5.55下载 The tech world got really excited the other day with the news that Winamp was supposedly returning with an all-new version that would solve all of our music-listening problems. And now the official Winamp 5.8 is available for download. Grea…

winamp 珍藏_Winamp 6可能不是汽配并且可能在2019年到货(可能)

winamp 珍藏 Llama Llama, red pajama, reads a story with his mama… and according to this story in Techcrunch today, Winamp might be coming back next year as version 6—but just like this paragraph, it doesn’t make any sense. Llama红色睡衣的Llama和他的妈妈…