Где я могу найти список всех типов MIME, поддерживаемых Firefox
или Chrome
? Все примеры, которые я видел до сих пор, используют только video/webm
.
Все типы MIME поддерживаются MediaRecorder в Firefox и Chrome?
Ответ 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, и наоборот.