XMLHttpRequestで音楽ファイルをロードしていますが、これは audioCtx.decodeAudioData(response)
でデコードしています。Audio API setValueCurveAtTime()Firefox
、私はその後audioCtx.destination
に、私はトラックが遅い開始、およびsetValueCurveAtTimeを使用して2倍の速度を上げたい、私はgainNode
を介して接続AudioBufferSourceNode
を作成します。 source.playbackRate.setValueCurveAtTime(new Float32Array([0, 2]), audioCtx.currentTime, 3);
私は、トラックが0のplaybackRateで始まり、3秒の時間にわたって2に増加することを期待しています。これはChromeで完璧に機能します。しかしFirefoxでは、トラックはplaybackRateが1で始まり、3秒後にはすぐに2に切り替わります。これは別の問題であることを
注そしてWeb Audio API Firefox setValueCurveAtTime()
コード:私はこの行を交換する際に
let audioCtx = new AudioContext();
let url ='http://mdn.github.io/decode-audio-data/viper.ogg';
loadBuffer(url);
function loadBuffer(url) {
console.log('loading buffer...');
let request = new XMLHttpRequest();
request.open('GET', url, true);
request.responseType = 'arraybuffer';
request.addEventListener('load', (e) => {
decodeAudioData(e.target.response);
});
request.send();
}
function decodeAudioData(response) {;
audioCtx.decodeAudioData(response).then((decodedBuffer) => {
console.log(`Decoding audio done`);
let source = audioCtx.createBufferSource();
source.buffer = decodedBuffer;
let gainNode = audioCtx.createGain();
source.connect(gainNode);
gainNode.connect(audioCtx.destination);
source.start(0);
source.playbackRate.setValueCurveAtTime(new Float32Array([0, 2]), audioCtx.currentTime, 3);
});
}
同じことが起こります:
source.playbackRate.setValueCurveAtTime(new Float32Array([0, 2]), audioCtx.currentTime, 3);
Wこれは:
再生率は0ですが、これはChromeの場合と同様に一時停止を模倣する必要があります。古い実装の場合: 'Chrome 46.0.2490は線形補間を使用します。以前のバージョンでは最近隣(MDN)を使用していますので、Firefoxも以前のバージョンを使用していると思いますか? – Pimmol
@Pimmolはい、それは私の前提です。 –