OfflineAudioContext

OfflineAudioContext interface is an AudioContext interface representing an audio-processing graph built from linked together AudioNode s. In contrast with a standard AudioContext , an OfflineAudioContext doesn't render the audio to the device hardware; instead, it generates it, as fast as it can, and outputs the result to an AudioBuffer .

构造函数

OfflineAudioContext.OfflineAudioContext()
创建新的 OfflineAudioContext 实例。

特性

Also inherits properties from its parent interface, BaseAudioContext .

OfflineAudioContext.length 只读
An integer representing the size of the buffer in sample-frames.

事件处理程序

OfflineAudioContext.oncomplete
Is an EventHandler called when processing is terminated, that is when the complete event (of type OfflineAudioCompletionEvent ) is raised, after the event-based version of OfflineAudioContext.startRendering() 被使用。

方法

Also inherits methods from its parent interface, BaseAudioContext .

OfflineAudioContext.suspend()
Schedules a suspension of the time progression in the audio context at the specified time and returns a promise.
OfflineAudioContext.startRendering()
Starts rendering the audio, taking into account the current connections and the current scheduled changes. This page covers both the event-based version and the promise-based version.

弃用方法

OfflineAudioContext.resume()
Resumes the progression of time in an audio context that has previously been suspended.

注意 : The resume() method is still available — it is now defined on the BaseAudioContext interface (see BaseAudioContext.resume() ) and thus can be accessed by both the AudioContext and OfflineAudioContext 接口。

Events

监听这些事件使用 addEventListener() 或通过把事件监听器赋值给 on eventname property of this interface:

complete
Fired when the rendering of an offline audio context is complete.
Also available using the oncomplete event handler property.

范例

In this simple example, we declare both an AudioContext OfflineAudioContext object. We use the AudioContext to load an audio track via XHR ( AudioContext.decodeAudioData ), then the OfflineAudioContext to render the audio into an AudioBufferSourceNode and play the track through. After the offline audio graph is set up, you need to render it to an AudioBuffer 使用 OfflineAudioContext.startRendering .

When the startRendering() promise resolves, rendering has completed and the output AudioBuffer is returned out of the promise.

At this point we create another audio context, create an AudioBufferSourceNode inside it, and set its buffer to be equal to the promise AudioBuffer . This is then played as part of a simple standard audio graph.

注意 : For a working example, see our offline-audio-context-promise Github repo (see the source code too.)

// define online and offline audio context
var audioCtx = new AudioContext();
var offlineCtx = new OfflineAudioContext(2,44100*40,44100);
source = offlineCtx.createBufferSource();
// use XHR to load an audio track, and
// decodeAudioData to decode it and OfflineAudioContext to render it
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 song = audioCtx.createBufferSource();
        song.buffer = renderedBuffer;
        song.connect(audioCtx.destination);
        play.onclick = function() {
          song.start();
        }
      }).catch(function(err) {
          console.log('Rendering failed: ' + err);
          // Note: The promise should reject when startRendering is called a second time on an OfflineAudioContext
      });
    });
  }
  request.send();
}
// Run getData to start the process off
getData();
					

规范

规范 状态 Comment
Web 音频 API
The definition of 'OfflineAudioContext' in that specification.
工作草案 初始定义

浏览器兼容性

更新 GitHub 上的兼容性数据
Desktop Mobile
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet
OfflineAudioContext Chrome 14 Edge ≤18 Firefox 25 IE 不支持 No Opera 15 Safari 6 WebView Android Yes Chrome Android 18 Firefox Android 26 Opera Android 14 Safari iOS ? Samsung Internet Android 1.0
OfflineAudioContext() 构造函数 Chrome 55
注意事项
55
注意事项
Before Chrome 59, the default values were not supported.
Edge ≤79 Firefox 53 IE 不支持 No Opera 42 Safari ? WebView Android 55
注意事项
55
注意事项
Before version 59, the default values were not supported.
Chrome Android 55
注意事项
55
注意事项
Before Chrome 59, the default values were not supported.
Firefox Android 53 Opera Android 42 Safari iOS ? Samsung Internet Android 6.0
注意事项
6.0
注意事项
Before Samsung Internet 7.0, the default values were not supported.
complete event Chrome 14 Edge 12 Firefox 25 IE 不支持 No Opera 15 Safari 6 WebView Android Yes Chrome Android 18 Firefox Android 26 Opera Android 14 Safari iOS ? Samsung Internet Android 1.0
length Chrome 51 Edge 14 Firefox Yes IE 不支持 No Opera 38 Safari 不支持 No WebView Android 51 Chrome Android 51 Firefox Android Yes Opera Android 41 Safari iOS 不支持 No Samsung Internet Android 5.0
oncomplete Chrome 14 Edge 12 Firefox 25 IE 不支持 No Opera 15 Safari 6 WebView Android Yes Chrome Android 18 Firefox Android 26 Opera Android 14 Safari iOS ? Samsung Internet Android 1.0
resume Chrome 49 Edge ≤18 Firefox 不支持 No IE 不支持 No Opera 36 Safari 不支持 No WebView Android 49 Chrome Android 49 Firefox Android 不支持 No Opera Android 36 Safari iOS 不支持 No Samsung Internet Android 5.0
startRendering Chrome 14 Edge 12 Firefox 25 IE 不支持 No Opera 15 Safari 6 WebView Android Yes Chrome Android 18 Firefox Android 26 Opera Android 14 Safari iOS ? Samsung Internet Android 1.0
suspend Chrome 49 Edge ≤18 Firefox 不支持 No IE 不支持 No Opera 36 Safari 不支持 No WebView Android 49 Chrome Android 49 Firefox Android 不支持 No Opera Android 36 Safari iOS 不支持 No Samsung Internet Android 5.0

图例

完整支持
完整支持
不支持
不支持
兼容性未知
兼容性未知
见实现注意事项。

另请参阅