我怎么能起到通过HTML5 .SPX文件?(How can I play .spx file by

2019-08-04 07:02发布

从HTML5规范,它似乎支持SPX: http://dev.w3.org/html5/spec-preview/the-source-element.html

使用:

但是从我的尝试,它不能在Firefox 17和Chrome都玩了,你能帮忙吗?

Answer 1:

我发现,在GitHub上(speex.js https://github.com/jpemartins/speex.js )可以解决你的问题。 随着speex.js可以解复用解码Speex语音文件(* .SPX或* .OGG),以WAV飞,这是由两个镀铬/火狐等众多现代浏览器的HTML5支持的准备。

  • 在你的HTML包括下thoese * .js文件https://github.com/jpemartins/speex.js/tree/master/public/js/lib
 <script src="bitstring.js"></script> <script src="pcmdata.min.js"></script> <script src="speex.js"></script> 
  • 下面的函数会做的伎俩,以SPX转换为WAV编解码器:
 /** * @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); } 


Answer 2:

细则中指出:

type属性给出了媒体资源的类型,以帮助用户代理确定它是否能够获取它之前播放此媒体资源。

该规范本身不指定任何音频或视频格式的支持,并支持高达个别浏览器。

...,没有浏览器据我所知支持.SPX。



文章来源: How can I play .spx file by html5 ?