上传前检查 MP4 是否为 H264 编码
Checking if MP4 is H264 encoded before upload
我已经构建了一个应用程序来管理上传广告,营销团队选择他们想要图片还是视频广告并填写包含标题、开始时间等的表格。然后这些数据存储在我的数据库中。
但是,对于视频有一个额外的步骤,它们被上传到 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()
returns文件信息:
mp4box.onReady = function (info) {
console.log("Received File Information");
}
其中有 tracks
,每个对应 codec
。
有关 codecs
格式的详细信息,请参阅 RFC 6381。
我已经构建了一个应用程序来管理上传广告,营销团队选择他们想要图片还是视频广告并填写包含标题、开始时间等的表格。然后这些数据存储在我的数据库中。
但是,对于视频有一个额外的步骤,它们被上传到 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()
returns文件信息:
mp4box.onReady = function (info) {
console.log("Received File Information");
}
其中有 tracks
,每个对应 codec
。
有关 codecs
格式的详细信息,请参阅 RFC 6381。