tl; dr. Вы не можете получить MP4 из API MediaRecorder. Я считаю, что вы можете заставить Amazon Elastic Transcoder конвертировать webm в mp4. Вам также следует попробовать передать ваши файлы webm / h.264 в Rekognition, если вы еще этого не сделали.
Как вы уже поняли, ваши требования состоят из двух частей: бокса и видео. Нам понадобится немного словарного запаса, чтобы подробно ответить на ваш вопрос.
Заниматься боксом
Прежде всего, это так называемый бокс или контейнерный формат. webm - это формат, основанный на Matroska, в свою очередь, на основе Расширяемый двоичный язык разметки (EBML). EBML был разработан для Matroska. Это похоже на XML, но требует меньше оперативной памяти и дискового пространства, потому что он не такой подробный. webm сам по себе является открытым и бесплатным стандартом для файлов мультимедиа.
Другой формат бокса - это MPEG-4. Он почти идентичен формату файлов фильмов Apple mov и называется форматом mp4.
WebRTC имеет свои собственные схемы боксов, адаптированные для передачи дейтаграмм (вместо потоков данных). За рамками вашего вопроса.
Кодек
Что находится в этих ящиках webm или mp4? Аудио и видео данные. (Они также могут содержать другие синхронизированные по времени потоки данных, такие как подписи, по мере необходимости.)
- h.264, также известный как Advanced Video Coding, MPEG-4 Часть 10, или AVC.
- vp8, кодек с открытым исходным кодом и без патентов, разработанный On2 приобретено Google
- h.265, также известный как высокоэффективное кодирование видео или HEVC.
- vp9, новейший кодек с открытым исходным кодом и без патентов, разработанный в Google.
Два последних, более новых, кодека требуют большего количества вычислительных циклов для сжатия. И h.265 по-прежнему требует значительного патентного бремени. Таким образом, браузеры и другое универсальное программное обеспечение обычно используют первые два, h.265 и vp8.
С чем могут справиться браузеры?
Браузеры Chromium (Google Chrome, Edge) и Firefox имеют MediaRecorder API а>. Они могут создавать потоки данных в Webm-боксах, содержащие аудио и / или видео. Они не могут создавать потоки данных в формате mp4.
Эти потоки данных из этих браузеров могут (по состоянию на октябрь 2020 года) содержать видео в кодировке VP8 или H.264. В случае видеоданных доступные типы MIME являются
video/webm; codecs="vp8"
(для vp8)
x-matroska/webm; codecs="avc1.42E01E"
или video/webm; codecs="avc1.42E01E"
для H.264.
Формально говоря, вы должны использовать x-matroska/video
, а не webm/video
в качестве типа MIME для видеопотоков, использующих H.264, даже если любой тип MIME работает в браузерах. Стандарт webm требует, чтобы его видеокодеки были либо vp8, либо vp9, поэтому video/webm; codecs="avc1.42E01E"
, формально говоря, не соответствует этому стандарту.
Модули Javascript
- npm ebml может распаковывать и упаковывать данные в потоки webm. Я использовал его возможности распаковки в крупномасштабном производстве. Оно работает.
- npm mp4-box-encoding может упаковывать данные в потоки mp4. Я этим не пользовался.
person
O. Jones
schedule
22.10.2020
video/mp4; codecs="avc1.4d002a"
? есть хорошее объяснение того, что ставить после.
в это документация - person Jaromanda X   schedule 14.10.2020MediaRecorder.isTypeSupported('video/mp4; codecs="avc1.4d002a')
, он даст значение false. Моя основная цель - получить видео с кодеками h264, чтобы использовать его для распознавания aws. - person Ayush Srivastava   schedule 14.10.2020