2012-11-30 37 views
4

比方说,我正在数据库中存储音频文件,后来我想在我的应用程序中使用该BLOB或二进制文件。使用原始二进制数据使用src的HTML5

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

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

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

+1

让我们这样说吧。但是你的问题是什么? –

+0

@BrianAgnew看起来我忘了放置最后的声明,我已经更新了它。 – KyelJmD

+1

为什么你不能只使用像'src =“/ user/music”'这样的url,并让该URL响应音频文件? – Esailija

回答

8

如内嵌图像有点:

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

如果这个工程的<img>,我绝不相信data:audio/mp3;base64, ... (或audio/ogg)将工作。它不在我的HTML5参考中。

对于编码,请参阅JEditorPane with inline Image

+1

它也适用于音频(刚刚测试过音频/ ogg) –

+0

@HarloHolmes,我喜欢这个。 Firefox和IE? –

+0

firefox肯定。还没有测试过IE ... –

0

则需要使用JavaScript来的二进制数据转换为字符串。请参考Post

+0

为什么我需要将原始二进制数据转换为字符串? – KyelJmD

+1

由于HTML不知道二进制文件...你必须在字符串 –

+0

中提供它,所以通过该字符串,它会将其作为音频文件读取? – KyelJmD

1

我需要为三维三维显示内嵌大量(一些MB)的二进制数据。

这就是我想出了:

  1. 写8位二进制数据转换成PNG文件
  2. Base64编码,导致运行长度压缩PNG文件
  3. 使用<img src="data:image/png;base64,....">以包括进html5文件
  4. 创建适当维度的隐藏画布并使用context.drawImage和context.getImageData提取最终存储在Uint8ClampedArray中的二进制数据
  5. 计算所需的Float32Array(个),threejs从Uint8ClampedArray

我不知道,如果这个工程也提供二进制音乐数据,但问题并没有提及音乐数据,它可能对他人有所帮助,像我一样在这里搁浅寻找将二进制数据包含到HTML5中的一般解决方案:-)

相关问题