6

html5 仕様から、spx をサポートしているようです: http://dev.w3.org/html5/spec-preview/the-source-element.html

使用:

しかし、試してみたところ、Firefox 17 と Chrome の両方で再生できません。

4

2 に答える 2

2

GitHub の speex.js ( https://github.com/jpemartins/speex.js ) で問題を解決できることがわかりました。speex.js を使用すると、speex ファイル (*.spx または *.ogg) を demux およびデコードしてオンフライで wav にすることができます。これは、Chrome/Firefox およびその他の多くの最新ブラウザー HTML5 対応でサポートされています。

<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);
}
于 2015-08-04T01:19:26.800 に答える
1

仕様は次のように述べています。

type 属性はメディア リソースのタイプを示し、ユーザー エージェントがこのメディア リソースを取得する前に再生できるかどうかを判断するのに役立ちます。

仕様自体は、サポートされるオーディオまたはビデオ形式を指定しておらず、サポートは個々のブラウザー次第です。

...そして、私の知る限り、.spx をサポートするブラウザーはありません。

于 2012-12-19T14:26:18.317 に答える