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 });
})()