我正在尝试播放一个mp3文件,它嵌入在我的c#应用程序(winforms)中但没有结果。我不想从资源创建文件并播放它。我搜索过互联网,但没有找到任何有效的例子。所有这些都是从资源创建一个文件并保存它,然后将文件路径传递给mci或wmp。是否可以传递流?
public partial class Form1 : Form
{
[DllImport("winmm.dll")]
private static extern long mciSendString(string lpstrCommand, StringBuilder lpstrReturnString, int uReturnLength, int hwndCallback);
public Form1()
{
InitializeComponent();
Stream fileStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("mymp3.mp3");
string command = "open" + fileStream not filePath + "type MPEGVideo alias MyMp3";
mciSendString(command, null, 0, 0);
command = "play MyMp3";
mciSendString(command, null, 0, 0);
}
}
提前致谢
答案 0 :(得分:0)
您需要将MP3转换为可播放的格式。你已经有了MP3流,所以你可以使用像NAudio这样的东西来转换为WAV流。完成此操作后,您可以使用SoundPlayer类。你得到的东西如下。
using (Mp3FileReader reader = new Mp3FileReader(fileStream)) {
using (WaveStream pcmStream = WaveFormatConversionStream.CreatePcmStream(reader)) {
SoundPlayer player = new SoundPlayer(pcmStream);
player.Play();
} } }