Поддержка PCM в WebM и реализация WebM в Chrome

Поддерживает ли WebM PCM для аудиокодека?

Я так не думал, но на странице документации WebM я вижу, что есть поддержка поля BitDepth со следующим комментарием:

BitDepth — количество битов на семпл, в основном используется для PCM.

Если WebM поддерживает PCM, поддерживает ли его реализация Chrome? И если да, то какой тип контента подходит для использования с MediaRecorder? Все они возвращают false:

MediaRecorder.isTypeSupported('video/webm;codecs=h264,pcm');
MediaRecorder.isTypeSupported('video/webm;codecs=h264,wav');
MediaRecorder.isTypeSupported('video/webm;codecs=h264,adpcm');
MediaRecorder.isTypeSupported('video/webm;codecs=h264,pcm_s16le');
MediaRecorder.isTypeSupported('audio/wav');

person Brad    schedule 21.11.2016    source источник


Ответы (2)


PCM теперь поддерживается в последней версии Chromium. Вот ссылка для список допустимых типов mime для MediaRecorder в Chromium.

В качестве снимка вот те, которые в настоящее время поддерживаются в Google Chrome версии 64.0.3282.167 (официальная сборка) (64-разрядная версия):

MediaRecorder.isTypeSupported("video/webm")
MediaRecorder.isTypeSupported("video/webm;codecs=vp8")
MediaRecorder.isTypeSupported("video/webm;codecs=vp9")
MediaRecorder.isTypeSupported("video/webm;codecs=vp8.0")
MediaRecorder.isTypeSupported("video/webm;codecs=vp9.0")
MediaRecorder.isTypeSupported("video/webm;codecs=h264")
MediaRecorder.isTypeSupported("video/webm;codecs=H264")
MediaRecorder.isTypeSupported("video/webm;codecs=avc1")
MediaRecorder.isTypeSupported("video/webm;codecs=vp8,opus")
MediaRecorder.isTypeSupported("video/webm;codecs=vp8,pcm")
MediaRecorder.isTypeSupported("video/WEBM;codecs=VP8,OPUS")
MediaRecorder.isTypeSupported("video/webm;codecs=vp9,opus")
MediaRecorder.isTypeSupported("video/webm;codecs=vp9,pcm")
MediaRecorder.isTypeSupported("video/webm;codecs=vp8,vp9,opus")
MediaRecorder.isTypeSupported("video/webm;codecs=h264,opus")
MediaRecorder.isTypeSupported("video/webm;codecs=h264,vp9,opus")
MediaRecorder.isTypeSupported("video/x-matroska;codecs=avc1")
MediaRecorder.isTypeSupported("audio/webm")
MediaRecorder.isTypeSupported("audio/webm;codecs=opus")
MediaRecorder.isTypeSupported("audio/webm;codecs=pcm")

Обратите внимание, что если вы используете Chromium, вам нужно собрать его с поддержкой proprietary_codecs, чтобы некоторые из более экзотических с h264/avc1 работали.

person Sepehr    schedule 18.02.2018
comment
Захватывающе! Спасибо. - person Brad; 18.02.2018

WebM не поддерживает звук PCM.

Файлы WebM состоят из видеопотоков, сжатых видеокодеками VP8 или VP9, ​​и аудиопотоков, сжатых аудиокодеками Vorbis или Opus.

Источник — http://www.webmproject.org/about/

Видео VP8/VP9 и аудио Vorbis/Opus — единственные кодеки, разрешенные в допустимом файле .webm. Почему вы так узко определили WebM?

Мы решили определить файлы WebM таким образом, потому что хотели сделать то, что лучше для пользователей.

Источник – https://www.webmproject.org/about/faq/

Относительно вашего примечания к документации:

Я так не думал, но я вижу на странице документации WebM, что существует поддержка поля BitDepth со следующим комментарием

WebM является подмножеством формата Matroska. Страница, которую вы цитируете, является просто точной копией спецификации Matroska с ее веб-сайта:

https://www.matroska.org/technical/specs/index.html

Страница WebM заимствует весь контент и отмечает, поддерживается ли свойство или нет. Строка 'Бит на выборку, в основном используется для PCM.' - это исходная спецификация Matroska, как и все остальные строки, например. 'Таблица горизонтальных углов для каждого последующего канала, см. приложение.' - обратите внимание, что приложение не дано, но на исходной странице спецификации Matroska есть гиперссылка на приложение. Спецификация Matroska имеет это конкретное описание свойства, потому что Matroska поддерживает звук PCM.

Чтобы узнать о поддержке PCM в Chrome, см. отличный ответ от Sepehr.

person Roman Pletnev    schedule 27.11.2016
comment
Часть этого ответа о поддержке Chromium PCM сегодня больше не актуальна. Теперь в Chromium есть поддержка PCM: cs.chromium.org/ хром/src/content/renderer/media_recorder/ - person Sepehr; 18.02.2018