--- title: AudioContext slug: Web/API/AudioContext tags: - API - Audio - AudioContext - Web Audio API - sound translation_of: Web/API/AudioContext --- <div>{{APIRef("Web Audio API")}}</div> <p><code>AudioContext</code>接口表示由链接在一起的音频模块构建的音频处理图,每个模块由一个{{domxref("AudioNode")}}表示。音频上下文控制它包含的节点的创建和音频处理或解码的执行。在做任何其他操作之前,您需要创建一个<code>AudioContext</code>对象,因为所有事情都是在上下文中发生的。建议创建一个<code>AudioContext</code>对象并复用它,而不是每次初始化一个新的<code>AudioContext</code>对象,并且可以对多个不同的音频源和管道同时使用一个<code>AudioContext</code>对象。</p> <p>{{InheritanceDiagram}}</p> <h2 id="构造函数">构造函数</h2> <dl> <dt>{{domxref("AudioContext.AudioContext", "AudioContext()")}}</dt> <dd>创建并返回一个新的 <code>AudioContext</code> 对象。</dd> </dl> <h2 id="属性">属性</h2> <p><em>也从其父接口继承属性, {{domxref("BaseAudioContext")}}.</em></p> <dl> <dt>{{domxref("AudioContext.baseLatency")}} {{readonlyinline}} {{experimental_inline}}</dt> <dd>返回{{domxref("AudioContext")}}将音频从{{domxref("AudioDestinationNode")}}传递到音频子系统的处理延迟的秒数。</dd> <dt>{{domxref("AudioContext.outputLatency")}} {{readonlyinline}} {{experimental_inline}}</dt> <dd>返回对当前音频上下文的预估输出延迟。</dd> </dl> <h2 id="方法">方法</h2> <p><em>也从其父接口继承方法, {{domxref("BaseAudioContext")}}.</em></p> <dl> <dt>{{domxref("AudioContext.close()")}}</dt> <dd>关闭一个音频环境, 释放任何正在使用系统资源的音频。</dd> <dt>{{domxref("AudioContext.createMediaElementSource()")}}</dt> <dd>创建一个{{domxref("MediaElementAudioSourceNode")}}接口来关联{{domxref("HTMLMediaElement")}}. 这可以用来播放和处理来自{{HTMLElement("video")}}或{{HTMLElement("audio")}} 元素的音频。</dd> <dt>{{domxref("AudioContext.createMediaStreamSource()")}}</dt> <dd>创建一个{{domxref("MediaStreamAudioSourceNode")}}接口来关联可能来自本地计算机麦克风或其他来源的音频流{{domxref("MediaStream")}}。</dd> <dt>{{domxref("AudioContext.createMediaStreamDestination()")}}</dt> <dd>创建一个{{domxref("MediaStreamAudioDestinationNode")}}接口来关联可能储存在本地或已发送至其他计算机的{{domxref("MediaStream")}}音频。</dd> <dt>{{domxref("AudioContext.createMediaStreamTrackSource()")}}</dt> <dd>创建一个{{domxref("MediaStreamTrackAudioSourceNode")}},它与一个{{domxref("MediaStream")}}相关联,表示一个媒体流轨迹。</dd> <dt>{{domxref("AudioContext.getOutputTimestamp()")}}</dt> <dd>返回一个新的AudioTimestamp对象,该对象包含两个与当前音频上下文相关的音频时间戳。</dd> <dt>{{domxref("AudioContext.resume()")}}</dt> <dd>恢复之前被暂停的音频上下文中的时间进程。</dd> <dt>{{domxref("AudioContext.suspend()")}}</dt> <dd>暂停音频上下文中的时间进程,暂停音频硬件访问并减少进程中的CPU/电池使用。</dd> </dl> <h2 id="例子">例子</h2> <p>简单声明:</p> <pre class="brush: js notranslate">var audioCtx = new AudioContext;</pre> <p>跨浏览器的方式:</p> <pre class="notranslate">var AudioContext = window.AudioContext || window.webkitAudioContext; var audioCtx = new AudioContext(); var oscillatorNode = audioCtx.createOscillator(); var gainNode = audioCtx.createGain(); var finish = audioCtx.destination; // etc.</pre> <h2 id="规范">规范</h2> <table class="standard-table"> <tbody> <tr> <th scope="col">规范</th> <th scope="col">状态</th> <th scope="col">注释</th> </tr> <tr> <td>{{SpecName('Web Audio API', '#AudioContext-section', 'AudioContext')}}</td> <td>{{Spec2('Web Audio API')}}</td> <td></td> </tr> </tbody> </table> <h2 id="浏览器兼容性">浏览器兼容性</h2> <p>{{Compat("api.AudioContext")}}</p> <div></div> <h2 id="相关链接">相关链接</h2> <ul> <li>使用 <a href="/zh-CN/docs/Web_Audio_API/Using_Web_Audio_API">Web Audio API</a></li> <li>{{domxref("OfflineAudioContext")}}</li> </ul>