读取wav格式的我是这样读取的:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Media;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
SoundPlayer player1 = new SoundPlayer("cishi.wav");
player1.Play();
}
}
}
这种方法只适用于wav格式的。
后我读取mp3格式的我是这样读取的:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Media;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
WMPLib.WindowsMediaPlayer wmp = new WMPLib.WindowsMediaPlayer();
wmp.URL = "mp3cishi.mp3";
wmp.controls.play();
}
}
}
在此中引用Interop.WMPLib.dll这个组件。这个是可以读取,但在杀毒软件的检测下,它是有漏洞的,检测为蠕虫病毒。
后我又用了这种方法
#region 播放Mp3
public class Mp3Player
{
// <summary>
/// 使用API
/// </summary>
static uint SND_ASYNC = 0x0001; // play asynchronously
static uint SND_FILENAME = 0x00020000; // name is file name
[DllImport("winmm.dll")]
static extern int mciSendString(string m_strCmd, string m_strReceive, int m_v1, int m_v2);
[DllImport("Kernel32", CharSet = CharSet.Auto)]
static extern Int32 GetShortPathName(String path,StringBuilder shortPath, Int32 shortPathLength);
public static void Play(string MusicFile)
{
if (!System.IO.File.Exists(MusicFile)) return;
StringBuilder shortpath=new StringBuilder(80);
int result = GetShortPathName(MusicFile, shortpath, shortpath.Capacity);
MusicFile = shortpath.ToString();
mciSendString(@"close all",null,0,0);
mciSendString(@"open " + MusicFile + " alias song", null, 0, 0); //打开
mciSendString("play song",null,0,0); //播放
}
}
#endregion
但这种方法调用时,为何有些MP3格式的音频文件无法读取。
望大家能有好的建议,好的其它方法帮我解决这个问题(C# WinForm 窗体程序如何调用mp3格式的音频文件),在此谢谢了。
------解决方案--------------------
你问,要加载的音频文件放在什么目录下?