来自html5规范,似乎支持spx: http://dev.w3.org/html5/spec-preview/the-source-element.html
使用:
但是从我的尝试来看,它无法在Firefox 17和Chrome中播放,你能帮忙吗?
答案 0 :(得分:2)
我发现GitHub上的speex.js(https://github.com/jpemartins/speex.js)可以解决你的问题。使用speex.js你可以解复用&将speex文件(* .spx或* .ogg)解码为wav on fly,Chrome / Firefox和许多其他现代浏览器都支持HTML5。
<script src="bitstring.js"></script> <script src="pcmdata.min.js"></script> <script src="speex.js"></script>
/** * @param bufSpx ArrayBuffer (Uint8Array) holding content of speex file (*.spx or *.ogg) */ function decodeFile(bufSpx) { var stream, samples, st; var ogg, header, err; ogg = new Ogg(bufSpx, {file: true}); ogg.demux(); stream = ogg.bitstream(); header = Speex.parseHeader(ogg.frames[0]); console.log(header); comment = new SpeexComment(ogg.frames[1]); console.log(comment.data); st = new Speex({ quality: 8, mode: header.mode, rate: header.rate }); samples = st.decode(stream, ogg.segments); var waveData = PCMData.encode({ sampleRate: header.rate, channelCount: header.nb_channels, bytesPerSample: 2, data: samples }); // array buffer holding audio data in wav codec var bufWav = Speex.util.str2ab(waveData); // convert to a blob object var blob = new Blob([bufWav], {type: "audio/wav"}); // return a "blob://" url which can be used as a href anywhere return URL.createObjectURL(blob); }
答案 1 :(得分:1)
规范说:
type属性给出媒体资源的类型,以帮助 用户代理确定它之前是否可以播放此媒体资源 拿它。
规范本身并未指定任何支持的音频或视频格式,并且支持取决于各个浏览器。
...据我所知,没有浏览器支持.spx。