各位大家好,并提前致谢。
我试图在网络表单中播放mp3文件。我正在使用我在网上找到的这门课程......
using System.Runtime.InteropServices;
using System.Text;
namespace MP3_Player
{
class MusicPlayer :System.IDisposable
{
public bool Repeat { get; set; }
public MusicPlayer(string filename)
{
const string FORMAT = @"open ""{0}"" type mpegvideo alias MediaFile";
string command = System.String.Format(FORMAT, filename);
mciSendString(command, null, 0, 0);
}
[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 MediaFile";
mciSendString(command, null, 0, 0);
}
public void play()
{
string command = "play MediaFile";
if(Repeat) command += " REPEAT";
mciSendString(command, null, 0, 0);
}
public void stop()
{
string command = "stop MediaFile";
mciSendString(command, null, 0, 0);
Dispose();
}
public void Dispose()
{
string command = "close MediaFile";
mciSendString(command, null, 0, 0);
}
}
}
...然后,我尝试使用这段代码从我的网络表单中播放...
private MusicPlayer player;
...
private void Detalles_Click(object sender, EventArgs e)
{
...
Thread thread = new Thread(Musica);
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
thread.Join();
}
private void Musica()
{
if(player != null)
{
player.stop();
}
player = new MusicPlayer("~/Mantenimiento/MP3/ejemplo.mp3");
player.play();
}
......但它不起作用。请问,有人可以告诉我我做错了什么,失踪了还是其他什么?。
顺便说一句,是否有更轻松的方式播放声音?我以前在Android中这样做,它只有大约五到六行代码。
感谢您的时间和帮助。
答案 0 :(得分:1)
不幸的是,您正在使用的控件正在尝试在服务器上播放该文件。您的目标是在客户端上播放它。为此,请在网页中添加html 5音频控件(请参阅此link)。将音频文件放在某处,以便可以从您的网站下载。使用音频控件中的该路径将音频文件传送到用户Web浏览器,以便他们可以播放它。
<audio controls id='audioTagId'>
<source src="path to media file.mp3' />
<p>Your user agent does not support the HTML5 Audio element.</p>
</audio>
如果需要,您可以根据操作使用javascript触发控件。
var v = document.getElementById("audioTagId");
v.play();