2016-11-21 84 views
2

WebM是否支持音頻編解碼器的PCM?WebM中的PCM支持和Chrome的WebM實現

我沒想到它做了,但是我看到的WebM documentation page有一個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'); 

回答

3

PCM現在支持最新的Chromium。 Here is a reference有關Chromium中MediaRecorder的有效MIME類型列表。

作爲一個快照,這裏是目前在谷歌的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工作更奇特的支持。

+0

令人興奮!謝謝。 – Brad

3

WebM不支持PCM音頻。

WebM的文件包括與包括Vorbis或作品 音頻編解碼器壓縮的VP8或VP9 視頻編解碼器和音頻流的壓縮視頻流。

來源 - http://www.webmproject.org/about/

VP8/VP9視頻和Vorbis /音頻作品被允許在一個有效的.webm文件的唯一的編解碼器。你爲什麼如此狹隘地定義WebM?

我們決定以這種方式定義WebM文件,因爲我們想要爲用戶做最好的事情。

來源 - https://www.webmproject.org/about/faq/

關於你的文檔注:

我沒想到它做了,但是我對WebM的文檔頁面上看到 有一款支持BitDepthfield,註釋如下

WebM是Matroska格式的子集。你引用的頁面是簡單地從它的網站上的Matroska規範的翻版:

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

的WebM的頁面借用的所有內容和音符屬性格式是否支持與否。該行'每個樣品的位數,主要用於PCM。' - 與所有其他生產線一樣,是最初的Matroska規格。 '每個連續通道的水平角表,見附錄。' - 請注意,沒有給出附錄,但在原始Matroska規範頁面上有一個指向附錄的超鏈接。 Matroska規範具有該特定的屬性描述,因爲Matroska支持PCM音頻。

對於Chrome中的PCM支持,請參見Sepehr的一個很好的回答。

+0

對Chromium的PCM支持的這個答案的一部分今天不再成立。現在支持Chromium中的PCM:https://cs.chromium.org/chromium/src/content/renderer/media_recorder/media_recorder_handler_unittest.cc – Sepehr