ios - 媒体记录器 iOS 14.6 : mimeType not supported

标签 ios audio-streaming web-mediarecorder

我正在通过网站录制和发送音频。为此,我使用了 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/

相关文章:

ios - 动态库可以被解码或解压到什么程度? - iOS

ios - 如何让振动设备保持在后台

audio - 压缩音频文件类似于从服务器到客户端的传输

video-capture - 如何阻止 mediarecorder 中的像素化伪像?

ios - 这个 Objective-C/XCode 注释是什么//[START_EXCLUDE]

ios - 在 UICollectionView 单元格中添加 UIViewController

android - 如何在Android应用程序中访问下载的音频文件夹

android - 4.4.4 版本的三星 SGH 设备。无法使用媒体播放器播放音频

javascript - 通过 MediaStream Recording API 对 Canvas 元素进行视频捕获不起作用

javascript - 如何正确录制 MediaStream?