查看原文
科技

C# 使用mciSendString播放声音

iamrick 技术老小子
2024-09-02

摘要


mciSendString 播放MP3

MCI(Media Control Interface,媒体控制接口)函数中,有些只适用于一种接口方式,有些则两种接口都可以用。mciSendString只适用于命令串接口方式(命令串中不区分大小写)。

正文


声明

[DllImport("winmm.dll")]private static extern uint mciSendString(string command,StringBuilder returnValue,int returnLength,IntPtr winHandle);

基本功能实现

注意temp_alias 这个是对应别名

/// <summary>/// 播放/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btnPlay_Click(object sender, EventArgs e){ StringBuilder path = new StringBuilder(); path.Append(@"D:\MyProject\白泽\Bz.Platform\wavplay\a.mp3"); mciSendString(@"close temp_alias", null, 0, IntPtr.Zero); mciSendString(@"open """ + path + @""" alias temp_alias", null, 0, IntPtr.Zero); mciSendString("play temp_alias repeat", null, 0, IntPtr.Zero);}/// <summary>/// 停止/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btnStop_Click(object sender, EventArgs e){ mciSendString("stop temp_alias", new StringBuilder(), 0, IntPtr.Zero);}/// <summary>/// 暂停/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btnPause_Click(object sender, EventArgs e){ mciSendString("pause temp_alias", new StringBuilder(), 0, IntPtr.Zero);}/// <summary>/// 继续/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btnResume_Click(object sender, EventArgs e){ mciSendString("resume temp_alias", new StringBuilder(), 0, IntPtr.Zero);}/// <summary>/// 取得音频长度/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btnLength_Click(object sender, EventArgs e){ StringBuilder lengthBuf = new StringBuilder(32); mciSendString("status temp_alias length", lengthBuf, lengthBuf.Capacity, IntPtr.Zero); long len = long.Parse(lengthBuf.ToString()); MessageBox.Show((len / 1000.0f/60.0f).ToString());}//调整声音1-1000private void tbVoice_Scroll(object sender, EventArgs e){ StringBuilder sb = new StringBuilder(32); sb.Append(tbVoice.Value.ToString()); mciSendString("setaudio temp_alias volume to "+ tbVoice.Value.ToString(), sb, sb.Capacity, IntPtr.Zero);}/// <summary>/// 取得当前位置/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btnCurrent_Click(object sender, EventArgs e){ StringBuilder lengthBuf = new StringBuilder(32); mciSendString("status temp_alias position", lengthBuf, lengthBuf.Capacity, IntPtr.Zero); long len = long.Parse(lengthBuf.ToString()); MessageBox.Show((len / 1000.0f / 60.0f).ToString());}

总结

在本文中,我们介绍了如何在 C# 中使用 mciSendString 函数播放声音。我们声明了 mciSendString 函数,并演示了一些常用的属性和方法,包括播放声音、暂停和继续播放、停止播放以及获取声音状态。


个人观点,仅供参考
继续滑动看下一个
技术老小子
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存