我正在使用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 = [];
}
最佳答案
目前,还没有办法让您立即获得所需的信息。
当前的W3C规范指出,如果未指定(由您指定)模仿类型,则:
UA将使用特定于平台的默认格式。
这就是您所遇到的情况,您没有指定任何mimetype和UA,浏览器正在为您选择最适合的类型,并且没有关于返回所选格式的方法的规范。
现在,唯一可以使您接近的方法是使用isTypeSupported
提供一些媒体支持检测,不幸的是,该文件提供了一些MIME类型,浏览器,平台,费率等功能,因此不太适合编写函数它将返回选择的模仿类型以及可用的组合数量:video/webm; codecs="vp"
,video/mp4; codecs="avc1.4d4015"
等。
最初的想法可能是向用户隐藏所有这些详细信息,但实际上,在特定情况下,用户需要知道模仿类型,例如保存生成的文件,这种情况经常出现。
An issue当前以一个命题打开,它提供了一种方法来使所有受支持的媒体类型按弱偏好进行排序,这意味着如果未提供,则返回的第一个媒体类型将是UA选择的默认媒体类型。
该问题是在5月创建的,但目前没有实际的后续措施。
关于javascript - 从未使用mimeType初始化的MediaRecorder中获取mimeType,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38337626/