【问题标题】:Stream audio to a webpage from c#从 c# 将音频流式传输到网页
【发布时间】:2015-11-22 08:40:56
【问题描述】:
[WebMethod]
public void PlayAudio(int id)
{


    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;

            MemoryStream ms = new MemoryStream(bytes);
            System.Media.SoundPlayer myPlayer = new System.Media.SoundPlayer(ms);
            myPlayer.Play();
        }
    }



}

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

谁能告诉我如何从 c# 将音频流式传输到网页,以便我可以使用 HTML5 音频标签将其连接到按钮

【问题讨论】:

标签: c# html audio asp.net-mvc-5


【解决方案1】:

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

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();
}

【讨论】:

  • 您在上面的代码中使用了控制器,而我使用 Web 服务来调用数据库中的音频。我将更新我的问题以说明这一点。
  • 当前上下文中不存在名称“Response”
  • Context.Response,我改了答案
猜你喜欢
  • 1970-01-01
  • 2014-03-21
  • 1970-01-01
  • 1970-01-01
  • 2014-08-12
  • 2012-05-30
  • 2015-06-29
  • 2016-01-26
  • 2019-10-29
相关资源
最近更新 更多