從HTML5規範,它似乎支持SPX: http://dev.w3.org/html5/spec-preview/the-source-element.html如何通過html5播放.spx文件?
使用:
但是從我的努力,它不能在Firefox 17和Chrome都玩了,你能幫忙嗎?
從HTML5規範,它似乎支持SPX: http://dev.w3.org/html5/spec-preview/the-source-element.html如何通過html5播放.spx文件?
使用:
但是從我的努力,它不能在Firefox 17和Chrome都玩了,你能幫忙嗎?
細則中指出:
類型屬性提供媒體資源的類型,幫助 用戶代理確定它是否能夠 之前播放此媒體資源獲取它。
該規範本身並沒有指定任何音頻或視頻格式的支持和支持取決於個別瀏覽器。
...並且據我所知沒有瀏覽器支持.spx。
我發現GitHub上的speex.js(https://github.com/jpemartins/speex.js)可以解決您的問題。通過speex.js,您可以將demux &解碼speex文件(* .spx或* .ogg)到wav中,這受到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); }