从未使用mimeType初始化的MediaRecorder获取mimeType

时间:2016-07-12 19:43:24

标签: javascript web-mediarecorder mediarecorder-api

我使用MediaRecorder API在网页上录制某些媒体。在我的MediaRecorder初始化中,我没有指定内容类型,因为我不需要任何特别的东西。浏览器可以选择它想要的内容。

var mediaRecorder = new MediaRecorder(stream);

但是,当需要保存该记录时,我需要知道blob的mimeType,因此我可以确定合理的文件扩展名。

MediaRecorder.mimeType属性是我想要的,但它是一个空字符串。它没有将mimeType设置为MediaRecorder的默认值,所以我似乎无法知道默认的mimeType是什么。

  mediaRecorder.onstop = function (e) {
    var mediaFileUrl = window.URL.createObjectURL(
      new Blob(chunks, {type: /* TODO: mime type here */})
    );

    $('<a>').attr({
      href: mediaFileUrl,
      download: 'Recording.?????' // TODO: Use mime type to figure out file name extension
    })[0].click();

    window.URL.revokeObjectURL(mediaFileUrl);
    chunks = [];
  }

2 个答案:

答案 0 :(得分:1)

目前,无法从包装盒中获取所需信息。

当前的W3C规范声明如果未指定mimetype(由您):

  

UA将使用特定于平台的默认格式。

在您的情况下发生了什么,您没有指定任何mimetype和UA,浏览器正在为您选择最适合的类型,并且没有关于获取所选格式的方法的说明回来。

目前,唯一可以让您接近的方法是使用提供某些媒体支持检测功能的isTypeSupported,不幸的是,它具有mimetypes,浏览器,平台,费率等等的数量,它是&#39 ; s不太适合编写一个函数,该函数将返回使用可用组合数量选择的mimetype:video/webm; codecs="vp"video/mp4; codecs="avc1.4d4015"等。

最初的想法可能是隐藏用户的所有这些细节,但实际上,用户需要知道mimetype以便例如保存生成的文件的特定情况是经常出现的。

An issue目前正在打开,提出了一种方法来获取所有支持的弱偏好排序的媒体类型,这意味着返回的第一个媒体类型将是UA选择的默认媒体类型(如果未提供)。

问题是在5月创建的,但目前没有实际的跟进。

答案 1 :(得分:-1)

对于音频,默认值似乎为audio/ogg,视频为video/ogg。使用VLC在Chrome和Firefox中进行了测试。

演示https://codecanister.com/Project/d547eed9/9/result