4

假设我在数据库中存储了一个音频文件,稍后我想在我的应用程序中使用该 BLOB 或二进制文件。

<audio src ="${sessionScope.user.music}"> 

Where${sessionScope.user.music}返回已从数据库中检索到的二进制数据。

是否可以使用二进制数据而不是 uri 在音频标签中加载音频文件?或路径?

4

3 回答 3

9

A bit like inline images:

<img src="data:image/gif;base64,R0lGODlhEAAOALMAAOazToeHh0tLS/7LZv/0jvb29t/
f3//Ub//ge8WSLf/rhf/3kdbW1mxsbP//mf///yH5BAAAAAAALAAAAAAQAA4AAARe8L1Ekyky67
QZ1hLnjM5UUde0ECwLJoExKcppV0aCcGCmTIHEIUEqjgaORCMxIC6e0CcguWw6aFjsVMkkIr7g7
7ZKPJjPZqIyd7sJAgVGoEGv2xsBxqNgYPj/gAwXEQA7"
    width="16" height="14" alt="embedded folder icon">

Where this works for <img>, I am far from sure that data:audio/mp3;base64, ... (or audio/ogg) would work. It is not in my HTML5 reference.

For the encoding, see JEditorPane with inline Image.

于 2012-11-30T12:41:43.650 回答
1

我需要为threejs 3D显示内联大量(一些MB)二进制数据。

这就是我想出的:

  1. 将 8bit 二进制数据写入 png 文件
  2. base64 编码生成的游程压缩 png 文件
  3. 用于<img src="data:image/png;base64,....">将其包含到 html5 文件中
  4. 创建适当尺寸的隐藏画布并使用 context.drawImage 和 context.getImageData 提取最终存储在 Uint8ClampedArray 中的二进制数据
  5. 从该 Uint8ClampedArray 计算threejs 所需的 Float32Array(s)

我不知道这是否也适用于提供二进制音乐数据,但问题没有提到音乐数据,它可能对像我这样滞留在这里寻找将二进制数据包含到 HTML5 中的通用解决方案的其他人有所帮助:-)

于 2015-07-06T08:46:55.123 回答
0

您需要使用 javascript 将二进制数据转换为字符串。请参阅帖子

于 2012-11-30T12:29:51.670 回答