我使用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 = [];
}
答案 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中进行了测试。