我正在通过网站录制和发送音频。为此,我使用了 MediaRecorder API。
根据 MediaRecorder documentation 在台式机或 Android 设备上使用网站时没有问题,自 2020 年 9 月发布以来,应该也支持 iOS 14。
MediaRecorder 是这样实例化的:
navigator.mediaDevices.getUserMedia({ audio: true, video: false })
.then((stream) => {
// Some validation and other processing. Omitted for brevity.
const mediaRecorder = new MediaRecorder(stream, { mimeType: 'audio/webm' });
// Using the mediaRecorder. Omitted for brevity.
});
在装有 iOS 14.6 的 iPhone 12 上执行此操作时,我从该实例化行收到以下错误:
NotSupportedError: mimeType is not supported
我在尝试其他格式时遇到同样的错误(这些是我发现并尝试过的格式):
audio/webm
(如上例所示)video/webm
audio/ogg
(在桌面上也有错误)audio/ogg; codecs=opus
(在桌面上也是错误)
MediaRecorder 是否有任何 mimeType 可以让我在 iOS 设备上使用音频?
我是不是完全错了?
最佳答案
我的首选解决方案是这样的:
if (MediaRecorder.isTypeSupported('video/webm; codecs=vp9')) {
var options = {mimeType: 'video/webm; codecs=vp9'};
} else if (MediaRecorder.isTypeSupported('video/webm')) {
var options = {mimeType: 'video/webm'};
} else if (MediaRecorder.isTypeSupported('video/mp4')) {
var options = {mimeType: 'video/mp4', videoBitsPerSecond : 100000};
} else {
console.error("no suitable mimetype found for this device");
}
const mediaRecorder = new MediaRecorder(stream, options);
IOS 只允许 mp4,所以运行这段代码后你会自动得到那个选项。
我相信这可能是比 try catch 错误更好的方法。
关于ios - 媒体记录器 iOS 14.6 : mimeType not supported,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67874713/