我目前正在使用C#开发MP3播放器。我是初学者。我已经能够开发一个普通的MP3播放器,其功能最少,如打开文件,暂停,播放和停止。但问题是它播放一些歌曲而不播放一些歌曲。我也导入了winmm.dll文件。但有些文件是播放而有些文件不播放。另外有人可以建议我如何添加一堆歌曲随机播放?代码是:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
namespace MP3Player
{
class MusicPlayer
{
Boolean isPlay=false;
[DllImport("winmm.dll")]
private static extern long mciSendString(string lpstrCommand, StringBuilder lpstrReturnString, int uReturnLength, int hwndCallback);
public void open(String file)
{
string command = "open \"" + file + "\" type MPEGVideo alias MyMp3";
mciSendString(command, null, 0, 0);
isPlay = false;
}
public void play()
{
if (isPlay == false)
{
string command = "play MyMP3";
mciSendString(command, null, 0, 0);
isPlay = true;
}
}
public void pause()
{
if (isPlay == true)
{
string command = "pause MyMP3";
mciSendString(command, null, 0, 0);
isPlay = false;
}
}
public void stop()
{
string command = "stop MyMp3";
mciSendString(command, null, 0, 0);
isPlay = false;
command = "close MyMp3";
mciSendString(command, null, 0, 0);
}
}
}
答案 0 :(得分:0)
我不知道为什么你的应用程序没有播放一些mp3,我想我可以假设它因为音频编码,但不要引用我。
至于你的"随机播放功能"
你可以尝试实现的是一个在目录中查找并获取该目录中所有mp3文件的数组,
然后它随机播放一首歌,下面是示例代码:
fileinfo MySongs() = MySongDirectoryString.getFiles();
foreach (song in MySong)
{
string SongName = song.tostring();
//code to play that song
}
答案 1 :(得分:0)
我建议使用Windows Media Player SDK。这是一个example。
答案 2 :(得分:0)
随机玩。 使用堆栈(更容易跟踪进度)
//Retrieve a list of files from a directory.
var di = new DirectoryInfo("Path to folder");
//Get the files and order them randomly.
var listOfFiles = di.GetFiles().OrderBy(s=> Guid.NewGuid);
//Convert the list to a stack.
var stack = new Stack<FileInfo>(listOfFiles);
现在,您可以使用Pop方法使用堆栈来获取列表中的下一首随机歌曲。
//Usage
var current = stack.Pop();
至于没有播放的问题,你可能想对你的mp3文件使用LAME编码器/解码器,它比windows dll更强大。