Все типы MIME поддерживаются MediaRecorder в Firefox и Chrome?

Где я могу найти список всех типов MIME, поддерживаемых Firefox или Chrome? Все примеры, которые я видел до сих пор, используют только video/webm.

Ответ 1

Я еще не видел какого-либо подробного списка для Firefox, но мне удалось найти что-то (через публикацию в MediaRecorder API из раздела веб-обновлений Google), которое ссылается на этот набор тестов кажется, что проливает свет на вещи.

По сути, похоже, что (на момент написания) были приняты MIME-типы для видео/аудио в Chrome:

  • видео /WebM
  • видео /WebM; кодеки = vp8
  • видео /WebM; кодеки = vp9
  • видео /WebM; кодеки = vp8.0
  • видео /WebM; кодеки = vp9.0
  • видео /WebM; кодеки = H264
  • видео /WebM; кодеки = H264
  • видео /WebM; кодеки = AVC1
  • видео /WebM, кодеки = vp8, опус
  • видео /WEBM, кодеки = VP8, OPUS
  • видео /WebM, кодеки = vp9, опус
  • видео /WebM, кодеки = vp8, vp9, опус
  • видео /WebM, кодеки = h264, опус
  • видео /WebM, кодеки = h264, vp9, опус
  • видео/х-Matroska; кодеки = AVC1

  • аудио /WebM

  • аудио /WebM, кодеки = опус

(РЕДАКТИРОВАНИЕ 2019-02-10: Обновлено, чтобы включить ссылку brianchirls ')

Ответ 2

Для Firefox принятые миметипы можно найти в MediaRecorder.cpp и подтвердить с помощью MediaRecorder.isTypeSupported(...)

Пример:

21:31:27.189 MediaRecorder.isTypeSupported('video/webm;codecs=vp8')
21:31:27.135 true
21:31:41.598 MediaRecorder.isTypeSupported('video/webm;codecs=vp8.0')
21:31:41.544 true
21:32:10.477 MediaRecorder.isTypeSupported('video/webm;codecs=vp9')
21:32:10.431 false
21:31:50.534 MediaRecorder.isTypeSupported('audio/ogg;codecs=opus')
21:31:50.479 true
21:31:59.198 MediaRecorder.isTypeSupported('audio/webm')
21:31:59.143 false

Ответ 3

Сегодня я нашел решение, которое включает в себя использование var canRecordVp9 = MediaRecorder.isTypeSupported('video/webm;codecs=vp9');

провести различие между Chrome (и Opera) и Firefox, а затем сделать if (canRecordVp9) { mediaRecorder = new MediaRecorder(stream, {mimeType : 'video/webm;codecs=vp9'}); } else { mediaRecorder = new MediaRecorder(stream); }

построить MediaRecorder соответственно.

Затем, когда схватил блоб: if (canRecordVp9) { blob = new Blob([myArrayBuffer], { "type" : "video/webm;codecs=vp9" }); } else { blob = new Blob([myArrayBuffer], { "type" : "video/webm" }); }

и, наконец, используйте FileReader, чтобы получить BLOB-объект как dataUrl: "

var reader = new FileReader();
reader.onload = function(event)
{
    var blobDataUrl = event.target.result;
}
reader.readAsDataURL(blob);'

Затем я сохраняю blobDataUrl в виде веб файла, и видео, записанные в Chrome, отлично работают в Firefox, и наоборот.