C# 从c将音频流到网页#

C# 从c将音频流到网页#,c#,html,audio,asp.net-mvc-5,C#,Html,Audio,Asp.net Mvc 5,显然,在上面的代码中,真正播放音频的是通过System.Media.SoundPlayer对象而不是浏览器播放的C#代码,这就是它无法在服务器上播放的原因 谁能告诉我如何从c#将音频流传输到网页,这样我就可以使用HTML5音频标签将其挂接到按钮上只需将流发送到客户端,浏览器将决定如何播放(您必须提供音频的MIME类型): 对于web服务,请尝试以下操作: public ActionResult PlayAudio(int id) { MemoryStream ms = null;

显然,在上面的代码中,真正播放音频的是通过System.Media.SoundPlayer对象而不是浏览器播放的C#代码,这就是它无法在服务器上播放的原因


谁能告诉我如何从c#将音频流传输到网页,这样我就可以使用HTML5音频标签将其挂接到按钮上

只需将流发送到客户端,浏览器将决定如何播放(您必须提供音频的MIME类型):

对于web服务,请尝试以下操作:

public ActionResult PlayAudio(int id)
{
    MemoryStream ms = null;
    using (The_FactoryDBContext db = new The_FactoryDBContext())
    {
        if (db.Words.FirstOrDefault(word => word.wordID == id).engAudio != null)
        {
            byte[] bytes = db.Words.FirstOrDefault(word => word.wordID == id).engAudio;

            ms = new MemoryStream(bytes);
        }
    }
    return File(ms,"audio/mpeg");//if it's mp3
}

看看这个:,您正在服务器端执行代码,只需添加一个音频标记并将其指向您的aspx,然后aspx应该像Taher所说的那样返回流。看看这个:您在上面的代码中使用控制器,正如我使用Web服务调用数据库中的音频一样。我将更新我的问题,说明当前上下文中不存在名称“Response”。Response,我更改了答案
public ActionResult PlayAudio(int id)
{
    MemoryStream ms = null;
    using (The_FactoryDBContext db = new The_FactoryDBContext())
    {
        if (db.Words.FirstOrDefault(word => word.wordID == id).engAudio != null)
        {
            byte[] bytes = db.Words.FirstOrDefault(word => word.wordID == id).engAudio;

            ms = new MemoryStream(bytes);
        }
    }
    return File(ms,"audio/mpeg");//if it's mp3
}
[WebMethod]
public void PlayAudio(int id)
{
    byte[] bytes = new byte[0];
    using (The_FactoryDBContext db = new The_FactoryDBContext())
    {
        if (db.Words.FirstOrDefault(word => word.wordID == id).engAudio != null)
        {
            bytes = db.Words.FirstOrDefault(word => word.wordID == id).engAudio;

        }
    }
    Context.Response.Clear();
    Context.Response.ClearHeaders();
    Context.Response.ContentType = "audio/mpeg";
    Context.Response.AddHeader("Content-Length", bytes.Length.ToString());
    Context.Response.OutputStream.Write(bytes, 0, bytes.Length);
    Context.Response.End();
}