繁体   English   中英

HTML5音频元素,源是音频,以音频二进制形式从数据库存储

[英]HTML5 audio element with source being audio stored as varbinary bytes from database

这是一个普通的音频播放器,但是如果我希望将源音频存储在数据库中,该如何实现?

<audio controls="controls" autoplay="true" loop="loop">
<source src="WhiteChristmas.mp3"/>
</audio>

这是我当前使用WebService从数据库中读取音频文件的方式。

 [WebMethod]
    public void PlayXhosa(int id)
    {

        using (The_FactoryDBContext db = new The_FactoryDBContext())
        {
            if (db.Words.FirstOrDefault(word => word.wordID == id).xhosaAudio != null)
            {
                byte[] bytes = db.Words.FirstOrDefault(word => word.wordID == id).xhosaAudio;

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

    }

这就是我目前的客户端代码

function PlayXhosa() {
                var id = $("[id$=hiddenWord_id]").val();
                $.ajax({

                    url: "../../WebService.asmx/PlayXhosa",
                    data: "{ 'id': '" + id + "'}",
                    dataType: "json",
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    success: function (data) {
                    },
                    error: function (XMLHttpRequest, textStatus, errorThrown) {

                    }
                });
            };

然后,我尝试调用此函数,如下所示:

 var audio = document.createElement('audio');
 audio.autoplay = false;
 audio.oncanplaythrough = function() {
 foo.disabled = false;
    };
   audio.src = 'PlayXhosa()';
   foo.onclick = function() {
     audio.play();

}

然后是按钮。

  <button id="foo" disabled>play xhosa audio</button>

该问题与您的HTML无关。 您的HTML仍将通过HTTP引用媒体的位置。 不同之处在于您将编写一个脚本,该脚本除了从数据库字段输出原始二进制数据外,什么也不做。

<source src="yourScript.aspx?file=WhiteChristmas.mp3" />

然后在脚本中,确保设置适当的标题:

Response.AddHeader("Content-Type", "audio/mpeg");

然后,回显该字段的内容。 您已经有了字节数组,因此只需使用类似Response.BinaryWrite(bytes)类的东西。

通过提出另一个稍有不同但仍然相同的问题,我就能得到这个问题的答案。

https://stackoverflow.com/a/32904927/5179424

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM