javascript - 捕获IE10中的麦克风

标签 javascript internet-explorer audio blob getusermedia

我需要在IE10中捕获麦克风音频。到目前为止,我有两个半解决方案:

微软的实验性WebRTC插件中的

  • getUserMedia:
    http://www.html5labs.com/prototypes/media-capture-api-(2nd-updated)/media-capture-api-(2nd-update)/info
    这样做的问题是,尽管我可以在浏览器中捕获和重放音频,但无法将音频发送到服务器。特别是,尚不清楚如何从“blob”对象中提取音频数据:
    function msStopRecordCallback(blob) {
          console.log(blob) // outputs {}
          console.dir(blob) // outputs {}
    
          playMediaObject.Play(blob); // This works!
    
    }
    
  • jRecorder:http://www.sajithmr.me/jrecorder-jquery这个问题是它依赖Flash来捕获音频,这是我想避免的事情。

  • 还有其他方法可以在IE10中捕获音频吗?

    最佳答案

    我知道我的回答有点晚了,但是...
    您可以按照以下步骤(Javascript)将Blob上传到服务器:

    function saveBlob(blob)
    {
       var uploader = new CustomXMLHttpRequest();
       uploader.onpartreceived = function (response)
       {
         // TODO: handle the server response here
       };
    
       var base = window.location.toString();
       var uploadService = base.substr(0, base.lastIndexOf("/")) + "/api/upload";
    
       uploader.open("POST", uploadService, true);
    
       uploader.responseType = "text";
    
       var form = new FormData();
       form.append("fname", blob, "audio.wav");
    
       uploader.send(form);
    }
    

    在服务器端,您可以将此Blob视为文件附件,例如(C#):
    public class UploadController : ApiController
    {
       public async Task<HttpResponseMessage> PostFile()
       {
          // Check if the request contains multipart/form-data.
          if (!Request.Content.IsMimeMultipartContent())
          {
            throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
          }
    
          var root = HttpContext.Current.Server.MapPath("~/App_Data");
          var provider = new MultipartFormDataStreamProvider(root);
    
          try
          {
            // Read the form data and return an async task.
            await Request.Content.ReadAsMultipartAsync(provider);
    
            var fileName = "";
    
            // get the uploaded files.
            foreach (var data in provider.FileData)
            {
              var file = new FileInfo(data.LocalFileName);
    
              // TODO: handle received file here
            }
    
            if (string.IsNullOrEmpty(fileName))
            {
              return Request.CreateResponse(HttpStatusCode.UnsupportedMediaType);
            }
    
            return Request.CreateResponse(HttpStatusCode.OK);
          }
          catch (System.Exception e)
          {
            return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e);
          }
      }
    }
    

    希望这会有所帮助。

    关于javascript - 捕获IE10中的麦克风,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18539193/

    相关文章:

    javascript - 使用 JavaScript 访问 HTML 中的标签

    javascript - 如何在 JavaScript 对象中过滤数组中的元素

    javascript - 一种形式中的两种不同 Action

    css - 无法在 Internet Explorer 中显示带 Angular 表格行的颜色

    javascript - 适用于 IE 的图表库?

    macos - 在Mac OS X上使用AudioUnit检测扬声器/耳机

    python - Python Wave音频采样率

    javascript - 知道 JavaScript 中表单的名称

    internet-explorer - 在 Node.js 上使用 SSL 时,Internet Explorer 导致服务器硬崩溃

    audio - FMOD channel 设置音量不起作用