javascript - 如何获取 mp4 的编解码器 mime 信息?
问题描述
如何codec
在 JavaScript 中获取 MP4 的信息,以便检查浏览器是否支持它?
const audioCodec = '';//<---?? exmaple: "mp4a.40.2"
const videoCodec = '';//<---?? example: "avc1.42e01e"
const video = document.getElementById('video');
const mimeCodec = 'video/mp4; codecs="' + audioCodec + ', ' + videoCodec + '"';
if (!('MediaSource' in window) || !MediaSource.isTypeSupported(mimeCodec)) {
console.error('Unsupported MIME type or codec: ', mimeCodec);
}
解决方案
我们没有内置的方法可以访问,因此您必须自己解析文件,或者使用库来这样做。
在许多其他功能中,MP4Box.js可以为 mp4 文件执行此操作。
const mp4boxfile = MP4Box.createFile();
mp4boxfile.onError = console.error;
mp4boxfile.onReady = (info) => {
console.log( info.tracks.map( track => track.codec ) );
};
fetch( "https://dl.dropboxusercontent.com/s/hyeredbcn60feei/BigChunksBunny1.mp4" ).then( (resp) => resp.arrayBuffer() )
.then( (buf) => {
buf.fileStart = 0;
mp4boxfile.appendBuffer( buf );
mp4boxfile.flush();
} );
<script src="https://gpac.github.io/mp4box.js/dist/mp4box.all.js"></script>
他们显然也有一个“简单”的构建,可能足以满足您的用例。
推荐阅读
- wordpress - 你可以在 WordPress 循环中有 2 个相邻的“if”语句吗?什么是最佳实践?
- python - 将十六进制值存储为整数
- azure - 对多租户应用程序使用授权码流不起作用
- swift - 图类的 Swift 泛型
- imagemagick - 使用 imagemagick++ 从 PNG 文件中读取元数据
- flutter - SharedPreferences 是让用户在 Flutter 中保持登录的安全方式吗?
- android - 在 Android 设备屏幕解锁之前运行服务
- node.js - router.param 未触发 passport.js 在 app.use 中初始化
- python - shell_exec 无法在 apache 服务器上启用
- reactjs - 从 React 表中获取单元格值