【问题标题】:Typescript web audio API missing definitionsTypescript 网络音频 API 缺少定义
【发布时间】:2015-09-26 13:43:14
【问题描述】:

我有兴趣开始在我的一些项目中使用 Typescript。现在我想使用 Web Audio API 进行一些实时音频处理,使用麦克风作为输入流源。我在 Visual Studio 2015 中工作,因为我将使用 ASP.NET 5。

我正在像这样定义我的音频上下文: var audioCtx: AudioContext;

它的工作原理是 AudioContext 定义存在于位于 A:\Program\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TypeScript 的 lib.d.ts 文件中

虽然当我稍后尝试使用audioCtx.createMediaStreamSource(stream)时,我在尝试转译告诉我Property "createMediaStreamSource" does not exist on type 'AudioContext' 的TS 代码时遇到错误。

这个错误似乎是正确的,因为这是使用的 lib.d.ts 文件中的内容:

interface AudioContext extends EventTarget {
    currentTime: number;
    destination: AudioDestinationNode;
    listener: AudioListener;
    sampleRate: number;
    createAnalyser(): AnalyserNode;
    createBiquadFilter(): BiquadFilterNode;
    createBuffer(numberOfChannels: number, length: number, sampleRate: number): AudioBuffer;
    createBufferSource(): AudioBufferSourceNode;
    createChannelMerger(numberOfInputs?: number): ChannelMergerNode;
    createChannelSplitter(numberOfOutputs?: number): ChannelSplitterNode;
    createConvolver(): ConvolverNode;
    createDelay(maxDelayTime?: number): DelayNode;
    createDynamicsCompressor(): DynamicsCompressorNode;
    createGain(): GainNode;
    createMediaElementSource(mediaElement: HTMLMediaElement): MediaElementAudioSourceNode;
    createOscillator(): OscillatorNode;
    createPanner(): PannerNode;
    createPeriodicWave(real: any, imag: any): PeriodicWave;
    createScriptProcessor(bufferSize?: number, numberOfInputChannels?: number, numberOfOutputChannels?: number): ScriptProcessorNode;
    createStereoPanner(): StereoPannerNode;
    createWaveShaper(): WaveShaperNode;
    decodeAudioData(audioData: ArrayBuffer, successCallback: DecodeSuccessCallback, errorCallback?: DecodeErrorCallback): void;
}

所以我想知道的基本上是是否可以为音频 API 获得更多“完整”的定义?这样我至少可以使用大部分可用的函数和对象。

我不想自己添加定义,那么我宁愿使用标准 ES5。但我认为,如果 Web Audio API 没有更完整的 TS 定义,因为它已经存在了几年(尽管它时不时地仍然会发生一些变化),这将是相当奇怪的。

【问题讨论】:

    标签: javascript visual-studio typescript html5-audio web-audio-api


    【解决方案1】:

    lib.d.ts 定义倾向于遵循当前 Microsoft 对标准的实施,并随着 Microsoft 添加对新方面的支持而增长。有时这意味着它领先于其他浏览器,有时它落后于其他浏览器。在 Mozilla 引入新想法的地方,他们当然会在实施方面领先于其他所有人,并且设备 API 是他们最喜欢的主题,因为它们与 Firefox OS 高度相关。

    缺的不多,你可以用下面的来插入缺的部分。当您需要删除以下任何内容时,编译器会告诉您“重复标识符”错误:

    interface MediaStream {
        id: string;
        active: boolean;
    }
    
    interface MediaStreamAudioSourceNode extends AudioNode {
        
    }
    
    interface MediaStreamAudioDestinationNode extends AudioNode {
        stream: MediaStream;
    }
    
    interface AudioContext {
        state: string;
        close: () => void;
        createMediaStreamSource: () => MediaStreamAudioSourceNode;
        createMediaStreamDestination: () => any;
        resume: () => void;
        suspend: () => void;
    }
    

    MediaStream 与 MDN 文档一样完整 - 请注意这方面,因为该对象的成员似乎支持最少的浏览器。

    【讨论】:

      【解决方案2】:

      如果你使用typings,你可以像这样安装网络音频api的类型定义:

      typings install dt~webaudioapi/waa --global --save

      【讨论】:

      • 不起作用:无法在注册表中找到“webaudioapi/waa”(“dt”)。
      猜你喜欢
      • 1970-01-01
      • 2013-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-10
      • 1970-01-01
      • 2012-02-06
      相关资源
      最近更新 更多