JSFiddle - React, Tailwind, and code Playground

by Abhijeet Kandalkar

JavaScript

const maybeCodecs = ["aac","ac-3","audio","avc1","avc1, mp4a.40","avc1, mp4a.40.02","avc1, mp4a.40.2","avc1.42001E","avc1.42101E","avc1.42701E","avc1.42E01E","avc1.42E01E, mp4a.40","avc1.42E01E, mp4a.40.02","avc1.42E01E, mp4a.40.2","avc1.42F01E","avc3","avc3, mp4a.40","avc3, mp4a.40.02","avc3", "mp4a.40.2","avc3.42801E","avc3.42C01E","avc3.42E01E","avc3.42E01E, mp4a.40","avc3.42E01E, mp4a.40.05","avc3.42E01E, mp4a.40.29","avc3.42E01E, mp4a.40.5","ec-3","flac","h264","hev1.1.6.L93.B0","hev1.1.6.L93.B0,mp4a.40.5","hevc","hvc1.1.6.L93.B0","hvc1.1.6.L93.B0,mp4a.40.5","mp4a.40","mp4a.40.02","mp4a.40.2","mp4a.66","mp4a.67","mp4a.68","mp4a.69","mp4a.6B","mp4a.A5","mp4a.A6","mp4a.a5","mp4a.a6","opus","theora","video","vp09.00.10.08","vp8","vp9"];

(async () => {
  if (typeof VideoEncoder === "undefined") return console.log('web codecs is not supported');
  const supportedCodecs = [];
  const unsupportedCodecs = [];
  const codecsThatTriggerError = [];
  for (const codec of maybeCodecs) {
    try {
      const { supported } = await VideoEncoder.isConfigSupported({ codec, width: 256, height: 256 });
      if (supported) supportedCodecs.push(codec);
      else unsupportedCodecs.push(codec);
    } catch(e) {
      codecsThatTriggerError.push(codec);
    }
  }
  console.log({ supportedCodecs, unsupportedCodecs, codecsThatTriggerError });
})()