Изучаем Mediarecorder API и действительно надеемся получить вывод mp4 вместо webm. Предпочитаю оставаться на стороне клиента, чтобы уменьшить ресурсы сервера, и ffmpeg. js на 17 МБ не представляется жизнеспособным для использования в Интернете.
Обнаружено, что можно создать (Chrome / Firefox) webm / h.264, который преобразует без перекодирования в mp4 с использованием FFMPEG. Получающийся файл прекрасно открывается в Quicktime MacOS ( источник фрагмента ):
ffmpeg -i _inputfile_.webm -c:v copy _outputfile_.mp4
В то время как этот умный взлом работает для отображения видео может быть как mp4 в браузере, но загруженный файл не откроется в Quicktime (только VL C, то же самое для webm):
new Blob(recordedBlobs, {type: 'video/mp4'});
video.src = window.URL.createObjectURL(superBuffer);
Поэтому задаюсь вопросом, есть ли еще JS хак, чтобы сделать то, что делает FFMPEG -c:v copy
, но с байтами больших двоичных объектов MediaRecorder recordedBlobs
и дать ему тот же контейнер mp4, который принят Quicktime / et c?
Pastebin текущей настройки