/ / Obsługa PCM w WebM i implementacja WebM Chrome - google-chrome, html5-audio, webm, web-mediarecorder

Obsługa PCM w WebM i implementacja WebM Chrome - google-chrome, html5-audio, webm, web-mediarecorder

Czy WebM obsługuje PCM dla kodeka audio?

Nie sądziłem, że tak, ale widzę to na Strona dokumentacji WebM że istnieje wsparcie dla BitDepth pole z następującym komentarzem:

BitDepth - Bity na próbkę, najczęściej używane do PCM.

Jeśli WebM obsługuje PCM, czy implementacja Chrome? A jeśli tak, to jaki jest odpowiedni typ zawartości do użytku z MediaRecorder? Wszystkie one zwracają 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");

Odpowiedzi:

3 dla odpowiedzi № 1

PCM jest teraz obsługiwany w najnowszym Chromium. Oto referencja listę ważnych typów MIME dla MediaRecorder w Chromium.

Oto migawka, która jest obecnie obsługiwana w Google Chrome w wersji 64.0.3282.167 (Official Build) (64-bit):

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")

Zauważ, że jeśli używasz Chromium, musisz mieć go wbudowanego proprietary_codecs wsparcie dla niektórych bardziej egzotycznych z h264 / avc1 do działania.


3 dla odpowiedzi № 2

WebM nie obsługuje dźwięku PCM.

Pliki WebM składają się ze strumieni wideo skompresowanych za pomocą VP8 lub VP9 kodeki wideo i strumienie audio skompresowane za pomocą Vorbis lub Opus kodeki audio.

Źródło - http://www.webmproject.org/about/

Wideo VP8 / VP9 i audio Vorbis / Opus są jedynymi kodekami dozwolonymi w prawidłowym pliku .webm. Dlaczego zdefiniowałeś WebM tak wąsko?

Zdecydowaliśmy się zdefiniować pliki WebM w ten sposób, ponieważ chcieliśmy zrobić to, co najlepsze dla użytkowników.

Źródło - https://www.webmproject.org/about/faq/

W odniesieniu do notatki dotyczącej dokumentacji:

Nie sądziłem, że tak, ale na stronie dokumentacji WebM widzę, że jest wsparcie dla BitDepthfield z następującym komentarzem

WebM jest podzbiorem formatu Matroska. Strona, którą cytujesz, jest po prostu kopią specyfikacji Matroska ze strony internetowej:

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

Strona WebM zapożycza całą zawartość i zauważa, czy propozycja jest obsługiwana, czy nie. Linia „Bity na próbkę, najczęściej używane do PCM”. - jest oryginalną specyfikacją Matroski, podobnie jak wszystkie inne linie, np. „Tabela kątów poziomych dla każdego kolejnego kanału, patrz załącznik.” - zauważ, że nie ma podanego dodatku, ale naoryginalna strona specyfikacji Matroska zawiera hiperłącze do dodatku. Specyfikacja Matroski ma ten szczególny opis właściwości, ponieważ Matroska obsługuje dźwięk PCM.

Aby uzyskać wsparcie PCM w Chrome, zobacz świetną odpowiedź Sepehr.