如何将原始mp3二进制文件转换为blob url并在音频标签中播放

时间:2018-08-12 03:54:15

标签: javascript websocket blob

即时通讯正在做的事情是通过websockets将mp3数据作为base64字符串发送并在浏览器端对其进行解码,即时通讯现在正在尝试将原始数据转换为blob并在音频标签中播放,但我不知道您如何提供帮助还可以解码base64字符串比较滞后

JAVASCRIPT

Caused by: org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [SELECT JOB_INSTANCE_ID, JOB_NAME from BATCH_JOB_INSTANCE where JOB_NAME = ? order by JOB_INSTANCE_ID desc]; nested exception is org.postgresql.util.PSQLException: ERROR: relation "batch_job_instance" does not exist
  Position: 39
    at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:234) ~[spring-jdbc-5.0.8.RELEASE.jar:5.0.8.RELEASE]
    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72) ~[spring-jdbc-5.0.8.RELEASE.jar:5.0.8.RELEASE]
    at org.springframework.jdbc.core.JdbcTemplate.translateException(JdbcTemplate.java:1402) ~[spring-jdbc-5.0.8.RELEASE.jar:5.0.8.RELEASE]

3 个答案:

答案 0 :(得分:0)

您可以尝试使用Web Audio API中的Audiocontext。将AudioContext.createBuffer()用于原始数据,然后可以将其传递到AudioBufferSourceNode中进行播放。您还可以使用decodeAudioData()方法来使用音频文件。

答案 1 :(得分:0)

您无需将其转换为raw。 HTML5音频已经支持base64作为URL:

<audio controls src="data:audio/mp3;base64, ...

答案 2 :(得分:0)

不确定“ js.buffer”是哪种数据?但是,如果已经对base64进行了编码,则可以像@Ashraf一样将其前缀为:

var audio = document.getElementById("audio");
audio.type = AudioType;
audio.src = "data:audio/mpeg;base64," + js.buffer;
// audio.src = "data:" + AudioType + ";base64," + js.buffer;
  

仅供参考:现代浏览器具有内置的base64编码/解码功能。

Use:
   atob() - decode base64
   btoa() - encode base64