--- title: OfflineAudioContext slug: Web/API/OfflineAudioContext translation_of: Web/API/OfflineAudioContext ---
OfflineAudioContext
é uma interface {{domxref("AudioContext")}} que representa um gráfico de processament de áudio construido a partir de conexões entre {{domxref("AudioNode")}}s. Em contraste com o padrão {{domxref("AudioContext")}}, um OfflineAudioContext
não processa o áudio para o hardware do dispositivo; Em vez disso, ele gera, o mais rápido possível, e exibe o resultado para um {{domxref("AudioBuffer")}}.{{InheritanceDiagram}}
OfflineAudioContext
.Também herda propriedades da sua entidade paterna, {{domxref("BaseAudioContext")}}.
Um número inteiro que representa o tamanho do buffer em quadros de amostra.
Também herda métodos da interface paterna, {{domxref("BaseAudioContext")}}.
Programa uma suspensão da progressão do tempo no contexto de áudio no horário especificado e retorna uma promessa.
Agende uma suspensão da progressão do tempo no contexto de áudio no horário especificado e retorna uma promessa.
Inicia a renderização do áudio, levando em consideração as conexões atuais e as mudanças programadas atuais. Esta página abrange a versão baseada em eventos e a versão baseada em promessas.
Nesse exemplo, declaramos um ambos {{domxref("AudioContext")}} e um OfflineAudioContext
objeto. Nós usamos o AudioContext
para carregar uma faixa de áudio via XHR ({{domxref("AudioContext.decodeAudioData")}}), então o OfflineAudioContext
para renderizar o áudio em um {{domxref("AudioBufferSourceNode")}} e reproduzir a trilha. Depois que o gráfico de áudio off-line estiver configurado, você deve renderizá-lo para {{domxref("AudioBuffer")}} usando {{domxref("OfflineAudioContext.startRendering")}}.
Quando a 'promise' startRendering()
é resolvida, a renderização foi concluída e a saída AudioBuffer
é retornada fora da 'promise.
Neste ponto, criamos outro contexto de áudio, criamos um {{domxref("AudioBufferSourceNode")}} dentro dele e configuramos o buffer para ser igual à promessa AudioBuffer
. Isso é jogado como parte de um gráfico de áudio padrão simples.
Nota: Para um exemplo de trabalho, veja nosso offline-audio-context-promise Github repo (veja o código fonte também.)
// define o contexto de áudio online e offline var audioCtx = new AudioContext(); var offlineCtx = new OfflineAudioContext(2,44100*40,44100); source = offlineCtx.createBufferSource(); // usa XHR para carregar uma faixa de áudio, e // decodeAudioData para decodificar e OfflineAudioContext para renderizar function getData() { request = new XMLHttpRequest(); request.open('GET', 'viper.ogg', true); request.responseType = 'arraybuffer'; request.onload = function() { var audioData = request.response; audioCtx.decodeAudioData(audioData, function(buffer) { myBuffer = buffer; source.buffer = myBuffer; source.connect(offlineCtx.destination); source.start(); //source.loop = true; offlineCtx.startRendering().then(function(renderedBuffer) { console.log('Rendering completed successfully'); var audioCtx = new (window.AudioContext || window.webkitAudioContext)(); var song = audioCtx.createBufferSource(); song.buffer = renderedBuffer; song.connect(audioCtx.destination); play.onclick = function() { song.start(); } }).catch(function(err) { console.log('Rendering failed: ' + err); // Nota: A promessa deve rejeitar quando o StartRendering é chamado uma segunda vez em um OfflineAudioContext }); }); } request.send(); } // Run getData to start the process off getData();
Specification | Status | Comment |
---|---|---|
{{SpecName('Web Audio API', '#OfflineAudioContext', 'OfflineAudioContext')}} | {{Spec2('Web Audio API')}} | Initial definition |
A tabela de compatibilidade nesta página é gerada a partir de dados estruturados. Se você quiser contribuir com os dados, verifique https://github.com/mdn/browser-compat-data e envie-nos um pedido de 'pull'.
{{Compat("api.OfflineAudioContext")}}