2

我正在使用 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 = [];
  }
4

2 回答 2

2

目前,没有办法开箱即用地获取您需要的信息。

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

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

这就是您的情况,您没有指定任何 mimetype 和 UA,浏览器正在为您选择最适合的类型,并且没有关于获取所选格式的方法的规范。

现在,唯一能让你接近的方法是使用isTypeSupported提供一些媒体支持检测的方法,不幸的是,由于 mimetypes、浏览器、平台、速率等的数量,它不太适合编写一个返回的函数使用可用组合数选择的 mimetype:video/webm; codecs="vp"video/mp4; codecs="avc1.4d4015"等。

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

目前提出的一个问题是提供一种方法来获取按弱偏好排序的所有受支持的媒体类型,这意味着如果未提供,则返回的第一个媒体类型将是 UA 选择的默认媒体类型。

该问题是在 5 月创建的,但目前没有实际的后续行动。

于 2016-07-15T09:10:37.257 回答
-1

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

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

于 2016-07-14T22:46:07.140 回答