javascript - 上传前检查 MP4 是否为 H264 编码

标签 javascript validation video ffmpeg h.264

我构建了一个应用程序来管理上传广告,营销团队选择他们是否想要图像或视频广告,并填写包含标题、开始时间等的表格。然后该数据存储在我的数据库中。

但是,对于视频,还有一个额外的步骤,它们将上传到 AWS,并且其配置方式仅适用于 H264 编码的视频。

我想为视频添加一些客户端验证,我发现了一个检查浏览器是否支持 H264 的相关问题:

How to detect supported video formats for the HTML5 video tag?

这是答案用来检查支持的代码

var testEl = document.createElement( "video" ),
    mpeg4, h264;

if ( testEl.canPlayType ) {
    // Check for h264 support
    h264 = "" !== ( testEl.canPlayType( 'video/mp4; codecs="avc1.42E01E"' )
        || testEl.canPlayType( 'video/mp4; codecs="avc1.42E01E, mp4a.40.2"' ) );
   );

我检查了控制台中的视频,将采用 H264 编码的视频与未采用 H264 编码的视频进行比较,但在其属性中找不到与 H264 相关的任何内容。 src 列出了 MP4 但没有其他内容:

src: data:video/mp4;base648766554654 etc.

最佳答案

您需要一个 JavaScript 的 MP4 解析器,例如 mp4box.js .

对于 MP4Box,您可以附加缓冲区,直到解析 moov 框,在最坏的情况下,这可能发生在文件末尾。

文档中的示例:

var MP4Box = require('mp4box').MP4Box;
var mp4box = new MP4Box();
mp4box.onError = function(e) {};
mp4box.onReady = function(info) {};
mp4box.appendBuffer(data);
mp4box.appendBuffer(data);
mp4box.appendBuffer(data);
...
mp4box.flush();

onReady()返回文件信息:

mp4box.onReady = function (info) {
    console.log("Received File Information");
}

其中有轨道以及每个轨道相应的编解码器

有关编解码器格式的详细信息,请参阅 RFC 6381 .

关于javascript - 上传前检查 MP4 是否为 H264 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41613419/

相关文章:

c# - 如何将数据表传递给Javascript

javascript 添加或合并到对象

javascript - 如何从字符串中删除后缀?

asp.net - 使用 RegularExpressionValidator 来限制字数?

python - Django 自定义登录页面

javascript - 表格排序器 2.0 : Sorting column having ICD9 codes

c# - mvc 验证日期/时间至少在未来 1 分钟

video - FFMPEG:在不损失质量的情况下裁剪视频

ios - 音频慢动作,例如使用 240FPS 的默认慢动作相机功能

video - 推特 API : Invalid Content response while uploading video