3

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');
4

2 回答 2

8

最新的 Chromium 现在支持 PCM。这是MediaRecorderChromium中有效 mime 类型列表的参考。

作为快照,以下是 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 才能工作。

于 2018-02-18T06:30:59.390 回答
2

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 文档页面上看到 支持 BitDepthfield 并带有以下评论

WebM 是 Matroska 格式的子集。您引用的页面只是其网站上 Matroska 规范的抄本:

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

WebM 页面借用所有内容并注明是否支持某个属性。“每个样本的位数,主要用于 PCM”。- 是原始的 Matroska 规范,就像所有其他行一样,例如“每个连续通道的水平角度表,见附录”。- 请注意,没有给出附录,但在原始 Matroska 规范页面上有一个指向附录的超链接。Matroska 规范具有特定的属性描述,因为 Matroska 支持 PCM 音频。

有关 Chrome 中的 PCM 支持,请参阅 Sepehr 的精彩回答。

于 2016-11-27T14:22:40.730 回答