javascript - 使用 MediaRecorder 以 MP4 格式从网络摄像头录制视频
问题描述
当我在支持 MP4 和 MediaRecorder(Linux 上的 Firefox)的浏览器中使用 JS MediaRecorder 以 MP4 格式录制网络摄像头时,网络摄像头启动但不记录。
当 MediaRecorder 的 mimeType 设置为时录制已经工作,video/webm
但是当我将 mimeType设置为时video/mp4
出现问题。
我用以下代码记录:
if (navigator.mediaDevices) {
var constraints = {audio: true, video: true};
navigator.mediaDevices.getUserMedia(constraints).then(function (stream) {
mediaRecorder = new MediaRecorder(stream, {mimeType: "video/mp4"});
mediaRecorder.start();
});
} else {
console.log("media recorder is not supported");
}
我希望网络摄像头在支持的浏览器中执行代码时开始录制,但是console.log
没有输出,并且在控制台中出现以下错误:
NotSupportedError: Operation is not supported
我知道我的浏览器同时支持 mp4 和 MediaRecorder:
MP4:https: //caniuse.com/#search=mp4 媒体记录器:https ://caniuse.com/#search=mediarecorder
但只有 webm 录音有效。
解决方案
我发现 Chromium 也不支持 mp4 录制,所以我决定在视频上传后在服务器端进行转换。
由于它是 GNU/Linux,为了加快我使用的转换速度:
ffmpeg -i input.webm -preset superfast output.mp4
如果有更快的方法,我想知道它们。
推荐阅读
- spring-boot - 如何在 Spring Boot 2 中将“spring.datasource.tomcat”属性绑定到 javax.sql.DataSource 类
- reactjs - Kendo-react-ui TreeList 如何自定义不同层次的单元格?
- javascript - 如何在没有任何动画的情况下默认切换隐藏
- python - 如何从列表中整理出类别中的值以便从 python 中的变量中访问数据?
- java - 使用条件 API 搜索 jsonb 字段
- flutter - 当它显示在聊天应用程序 Flutter 中时,无法使底部文本字段粘在键盘顶部
- xcode - Xcode 科尔多瓦项目 - 豆荚
- kubernetes - Apache Ignite 堆大小推荐
- android - android中没有数据到highcharts时如何设置默认消息
- mysql - 在mysql中没有得到想要的输出