gpt4 book ai didi

javascript - HTML5 音频元素,源是音频,存储为数据库中的 varbinary 字节

转载 作者:行者123 更新时间:2023-11-28 06:58:41 25 4
gpt4 key购买 nike

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

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

这就是我目前使用 Web 服务从数据库中读取音频文件的方式。

 [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" />

然后在您的脚本中,请务必设置适当的 header :

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

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

关于javascript - HTML5 音频元素,源是音频,存储为数据库中的 varbinary 字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32337624/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com