Javascript 从不是';t使用mimeType初始化
我正在使用MediaRecorder API在页面上录制一些媒体。在我的MediaRecorder初始化中,我没有指定内容类型,因为我不需要任何特别的内容。浏览器可以选择它想要的内容Javascript 从不是';t使用mimeType初始化,javascript,web-mediarecorder,mediarecorder-api,Javascript,Web Mediarecorder,Mediarecorder Api,我正在使用MediaRecorder API在页面上录制一些媒体。在我的MediaRecorder初始化中,我没有指定内容类型,因为我不需要任何特别的内容。浏览器可以选择它想要的内容 var mediaRecorder = new MediaRecorder(stream); 但是,当需要保存该录制时,我需要知道blob的mimeType,以便确定合理的文件扩展名 我想要的是proprety,但它是一个空字符串。它没有将MediaRecorder的默认值设置为mimeType,因此我似乎无法知
var mediaRecorder = new MediaRecorder(stream);
但是,当需要保存该录制时,我需要知道blob的mimeType,以便确定合理的文件扩展名
我想要的是proprety,但它是一个空字符串。它没有将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 = [];
}
mediaRecorder.onstop=函数(e){
var mediaFileUrl=window.URL.createObjectURL(
新Blob(块,{type:/*TODO:mime-type here*/})
);
$('').attr({
href:mediaFileUrl,
下载:'Recording.???'//TODO:使用mime类型计算文件扩展名
})[0]。单击();
window.URL.revokeObjectURL(mediaFileUrl);
块=[];
}
对于音频,默认值似乎是音频/ogg
,对于视频视频/ogg
。通过VLC在Chrome和Firefox中进行测试
演示:此时,您无法直接获取所需信息 当前的W3C规范规定,如果未指定mimetype(由您指定): UA将使用特定于平台的默认格式 这就是您的情况,您没有指定任何mimetype和UA,浏览器正在为您选择最适合的类型,并且没有关于返回所选格式的方法的规范 目前,唯一能让您接近这一点的方法是使用
isTypeSupported
,它提供一些媒体支持检测,不幸的是,它涉及到了大量的模拟类型、浏览器、平台、速率等。,它不适合编写一个函数来返回所选的mimetype和可用的组合数:video/webm;codecs=“vp”
,视频/mp4;codecs=“avc1.4d4015”
等
最初的想法可能是对用户隐藏所有这些细节,但实际上,用户需要知道mimetype以便保存生成的文件的具体情况经常出现
当前打开时提供了一种方法,以获得所有受支持的媒体类型,并按弱首选项排序,这意味着返回的第一个媒体类型将是UA选择的默认类型(如果未提供)
该问题创建于5月,但目前没有实际跟进。这不能保证,将来的浏览器版本可能会更改。此外,我通常使用webm,而不是ogg。虽然这是事实,但这是现在获得正确mime的唯一方法。唯一的另一个选择是进行客户端内容嗅探,这并不容易。你能最终证明现有API不可能做到这一点吗?(简短的打字嗅探)我很乐意把赏金奖励给能证明这是不可能的人。
https://codecanister.com/Project/d547eed9/9/result 加载资源失败:服务器响应状态为404(未找到)
对我有效,您这边可能有问题?@guest271314包含编码媒体段的数组。以哪种格式编码?chunks
是ArrayBuffer
?在开始录制之前,您是否可以为用户提供选择要录制的MIME
类型的选项?然后将Blob
type
设置为selectedMIME
,而不是允许浏览器选择MIME
类型;哪个似乎正在设置空字符串?您还可以利用isTypeSupported
来确定浏览器是否可以播放特定的媒体类型。请参阅更新:Chrome错误跟踪到类似问题并已修复,因此生成的编码blob应正确指定mimeType
。