2015-09-28 129 views
1

我目前正在开发一种使用用户PC麦克风的录音机,它工作正常。然而,当我要录制的声音,我得到这种类型的错误:MediaStreamRecorder和TypeScript未捕获TypeError

audioHandler.ts:45 Uncaught TypeError: MediaStreamRecorder is not a function

这是代码:

/// <reference path="../references.d.ts" /> 
//This component handles all things audio related 

export = Scaut.AudioHandler; 

module Scaut.AudioHandler { 

    var n = <any>navigator; 
    var stream = <any>""; 
    var stopRecording = <any>""; 
    var mediaRecorder = <any>""; 
    //var MediaStreamRecorder = <any>""; 

    //Check if microphone is ok 
    export function hasGetUserMedia() { 
     n.getUserMedia = n.getUserMedia || 
     n.webkitGetUserMedia || 
     n.mozGetUserMedia; 

     if (n.getUserMedia) { 
      n.getUserMedia({ audio: true}, 
       function (stream) { 
        var audio = <any>""; 
        audio = document.getElementById('audioRecord'); 
        audio.src = window.URL.createObjectURL(stream); 
        audio.onloadedmetadata = function (e) { 
         audio.play(); 
        }; 
       }, 
       function (err) { 
        alert("The following error occured: " + err.name); 
       } 
      ); 
     } else { 
      alert("getUserMedia not supported"); 
     } 

     recordAudio(stream); 
    } 

    //Record audio 
    export function recordAudio(stream) { 
     mediaRecorder = new MediaStreamRecorder(stream); 
     console.log("Stream: "+stream) 
     mediaRecorder.mimeType = 'audio/ogg'; 
     mediaRecorder.audioChannels = 1; 
     mediaRecorder.ondataavailable = function (blob) { 
      // POST/PUT "Blob" using FormData/XHR2 
      var blobURL = URL.createObjectURL(blob); 
      //document.write('<a href="' + blobURL + '">' + blobURL + '</a>'); 
      console.log("Blob: "+blob) 
      console.log("BlobUrl: "+blobURL) 
     }; 
     mediaRecorder.start(3000); 
    } 

任何人都可以点我在正确的方向?

+0

您是否在您的文件中导入了https://github.com/streamproc/MediaStreamRecorder? – Overmachine

回答

0

它看起来像你的错误是在编译时(因为错误信息指向你的.ts文件)。

该错误意味着编译不知道MediaStreamRecorder类型,我假设您从JavaScript库导入。

要清除错误,你可以使用像下面的代码做它一个简单的类型定义...

declare var MediaStreamRecorder: any; 

这将清除错误,但不会给你任何进一步的类型检查或类型的自动完成。 You can add more detail to your type definition如果需要,可以改善这种情况。

+1

谢谢芬顿!那正是我所期待的。其实,我刚刚买了你的书Pro TypeScript,今天收到它,期待着深入。 –

+0

不客气 - 并感谢您购买我的书:) – Fenton

相关问题