Webcodecs 编解码对视频格式的兼容性(支持性)检测

发布于 2024-01-28 00:14:47 字数 5358 浏览 32 评论 0

可复制代码在浏览器控制台中验证当前浏览器的支持情况

编码

const codecs = ["avc1.42E01F", "vp8", "vp09.00.10.08", "av01.0.04M.08", "hvc1.1.6.L123"];
const accelerations = ["prefer-hardware", "prefer-software"];

const configs = [];
for (const codec of codecs) {
  for (const acceleration of accelerations) {
    configs.push({
      codec,
      hardwareAcceleration: acceleration,
      width: 1280,
      height: 720,
      not_supported_field: 123,
    });
  }
}

for (const config of configs) {
  const support = await VideoEncoder.isConfigSupported(config);
  console.log(
    `support: ${
      support.supported
    }; codec: ${config.codec}(${config.hardwareAcceleration === 'prefer-hardware' ? '硬编' : '软编'});  config ${JSON.stringify(support.config)}`
  );
}

输出示例

support: true; codec: avc1.42E01F(硬编); config {"alpha":"discard","bitrateMode":"variable","codec":"avc1.42001E","hardwareAcceleration":"prefer-hardware","height":720,"latencyMode":"quality","width":1280}
support: true; codec: avc1.42E01F(软编); config {"alpha":"discard","bitrateMode":"variable","codec":"avc1.42001E","hardwareAcceleration":"prefer-software","height":720,"latencyMode":"quality","width":1280}
support: false; codec: vp8(硬编); config {"alpha":"discard","bitrateMode":"variable","codec":"vp8","hardwareAcceleration":"prefer-hardware","height":720,"latencyMode":"quality","width":1280}
support: true; codec: vp8(软编); config {"alpha":"discard","bitrateMode":"variable","codec":"vp8","hardwareAcceleration":"prefer-software","height":720,"latencyMode":"quality","width":1280}
support: false; codec: vp09.00.10.08(硬编); config {"alpha":"discard","bitrateMode":"variable","codec":"vp09.00.10.08","hardwareAcceleration":"prefer-hardware","height":720,"latencyMode":"quality","width":1280}
support: true; codec: vp09.00.10.08(软编); config {"alpha":"discard","bitrateMode":"variable","codec":"vp09.00.10.08","hardwareAcceleration":"prefer-software","height":720,"latencyMode":"quality","width":1280}
support: false; codec: av01.0.04M.08(硬编); config {"alpha":"discard","bitrateMode":"variable","codec":"av01.0.04M.08","hardwareAcceleration":"prefer-hardware","height":720,"latencyMode":"quality","width":1280}
support: true; codec: av01.0.04M.08(软编); config {"alpha":"discard","bitrateMode":"variable","codec":"av01.0.04M.08","hardwareAcceleration":"prefer-software","height":720,"latencyMode":"quality","width":1280}
support: false; codec: hvc1.1.6.L123(硬编); config {"alpha":"discard","bitrateMode":"variable","codec":"hvc1.1.6.L123","hardwareAcceleration":"prefer-hardware","height":720,"latencyMode":"quality","width":1280}
support: false; codec: hvc1.1.6.L123(软编); config {"alpha":"discard","bitrateMode":"variable","codec":"hvc1.1.6.L123","hardwareAcceleration":"prefer-software","height":720,"latencyMode":"quality","width":1280}

解码

const codecs = ["avc1.42E01F", "vp8", "vp09.00.10.08", "av01.0.04M.08", "hvc1.1.6.L123"];
const accelerations = ["prefer-hardware", "prefer-software"];

const configs = [];
for (const codec of codecs) {
  for (const acceleration of accelerations) {
    configs.push({
      codec,
      hardwareAcceleration: acceleration,
      codecWidth: 1280,
      codecHeight: 720,
      not_supported_field: 123,
    });
  }
}

for (const config of configs) {
  const support = await VideoDecoder.isConfigSupported(config);
  console.log(
    `support: ${
      support.supported
    }; codec: ${config.codec}(${config.hardwareAcceleration === 'prefer-hardware' ? '硬解' : '软解'}); config ${JSON.stringify(support.config)}`
  );
}

输出示例

support: true; codec: avc1.42E01F(硬解); config {"codec":"avc1.42001E","hardwareAcceleration":"prefer-hardware"}
support: true; codec: avc1.42E01F(软解); config {"codec":"avc1.42001E","hardwareAcceleration":"prefer-software"}
support: false; codec: vp8(硬解); config {"codec":"vp8","hardwareAcceleration":"prefer-hardware"}
support: true; codec: vp8(软解); config {"codec":"vp8","hardwareAcceleration":"prefer-software"}
support: true; codec: vp09.00.10.08(硬解); config {"codec":"vp09.00.10.08","hardwareAcceleration":"prefer-hardware"}
support: true; codec: vp09.00.10.08(软解); config {"codec":"vp09.00.10.08","hardwareAcceleration":"prefer-software"}
support: false; codec: av01.0.04M.08(硬解); config {"codec":"av01.0.04M.08","hardwareAcceleration":"prefer-hardware"}
support: true; codec: av01.0.04M.08(软解); config {"codec":"av01.0.04M.08","hardwareAcceleration":"prefer-software"}
support: true; codec: hvc1.1.6.L123(硬解); config {"codec":"hvc1.1.6.L123","hardwareAcceleration":"prefer-hardware"}
support: true; codec: hvc1.1.6.L123(软解); config {"codec":"hvc1.1.6.L123","hardwareAcceleration":"prefer-software"}

音频类似:

const codecs = ["mp4a.40.2", "mp3"];
const configs = [];
for (const codec of codecs) {
  configs.push({
    codec,
    sampleRate: 48000,
    numberOfChannels: 1,
    not_supported_field: 123,
  });
}
for (const config of configs) {
  const support = await AudioEncoder.isConfigSupported(config);
  console.log(
    `AudioEncoder's config ${JSON.stringify(support.config)} support: ${
      support.supported
    }`
  );
}

代码来源:https://developer.mozilla.org/en-US/docs/Web/API/AudioEncoder/isConfigSupported_static

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

羁绊已千年

暂无简介

文章
评论
26 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文