- 1、本文档共17页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
最近的项目中要做这样一个功能在服务器上可以通过播
最近的项目中,要做这样一个功能,在服务器上可以通过播放器针对不同的音箱设备来播放不同的音乐,就像大学里英语角一样,校广播台对不同的活动中心播放的不同的英文广播。当然我们的项目功能类似,但是却也没校园广播那么复杂,校园广播使用了很好的音频设备,我们得控制成本,所以我们的解决方案是:在服务器上安装一块多通道的专业声卡(录音棚用来录音)或者是安装多块普通的声卡。这样我们在播放音乐的时候可以选择输出的声卡,播放界面如下:
如何去做这样一个播放器呢,.net framework中是不是有这个接口,网上找了一下资料,发现有两种方法:
第一种方法是调用win32下的winmm.dll的API函数去播放文件,代码:
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace HardWaresOperation
{
public class SpeakerBeeper
{
//文件资源
private string SoundSource = @C:\Documents and Settings\Administrator\桌面\gc22002a.wav;
private string SoundSource;
public SpeakerBeeper(string _SoundSource)
{
SoundSource = _SoundSource;
}
/// summary
/// 检查声卡,播放声音
/// /summary
/// param name=_SoundSource声音文件/param
/// returns播放成功,返回true/returns
public bool SpeakerBeep()
{
if (SBHelper.waveOutGetNumDevs() != 0)
{
SBHelper.PlaySound(SoundSource, IntPtr.Zero, SBHelper.PlaySoundFlags.SND_FILENAME | SBHelper.PlaySoundFlags.SND_ASYNC);
return true;
}
else
{
return false;
}
}
}
// 这是辅助的文件SBHelper.cs
public class SBHelper
{
public enum PlaySoundFlags : int
{
SND_SYNC = 0x0000,//同步
SND_ASYNC = 0x0001,//异步
SND_NODEFAULT = 0x0002,//未找到文件默认为静音
SND_MEMORY = 0x0004,//声音文件来自内存
SND_LOOP = 0x0008, //循环播放
SND_NOSTOP = 0x0010,//不停止目前的播放
SND_NOWAIT = 0//当播放器忙碌时不等待
SND_ALIAS = 0 //为已注册的别名时
SND_ALIAS_ID = 0 //别名为ID
SND_FILENAME = 0 //文件名
SND_RESOURCE = 0//资源名
}
[DllImport(winmm.dll, EntryPoint = waveOutGetNumDevs)]
//waveOutGetNumdevs()方法
//当机器有声卡时返回1
//没有声卡返回0
publ
文档评论(0)