C#MP3文件播放操作

/// <summary>
/// MP3文件播放操作辅助类
/// </summary>
public class MP3Helper
{
[DllImport("winmm.dll")]
private static extern long mciSendString(string strCommand, System.Text.StringBuilder strReturn, int iReturnLength, IntPtr hwndCallback);

public static void Play(string MP3_FileName,bool Repeat)
{
mciSendString("open \"" + MP3_FileName + "\" type mpegvideo alias MediaFile", null, 0, IntPtr.Zero);
mciSendString("play MediaFile" + (Repeat ? " repeat" :String.Empty), null, 0, IntPtr.Zero);
}
public static void Play(byte[] MP3_EmbeddedResource, bool Repeat)
{
extractResource(MP3_EmbeddedResource, Path.GetTempPath() + "resource.tmp");
mciSendString("open \"" + Path.GetTempPath() + "resource.tmp" + "\" type mpegvideo alias MediaFile", null, 0, IntPtr.Zero);
mciSendString("play MediaFile" + (Repeat ? " repeat" : String.Empty), null, 0, IntPtr.Zero);
}

public static void Pause()
{
mciSendString("stop MediaFile", null, 0, IntPtr.Zero);
}

public static void Stop()
{
mciSendString("close MediaFile", null, 0, IntPtr.Zero);
}

private static void extractResource(byte[] res,string filePath)
{
FileStream fs;
BinaryWriter bw;

if (!File.Exists(filePath))
{
fs = new FileStream(filePath, FileMode.OpenOrCreate);
bw = new BinaryWriter(fs);

foreach (byte b in res)
bw.Write(b);

bw.Close();
fs.Close();
}
}
}

posted @   龙丶谈笑风声  阅读(419)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示