gpt4 book ai didi

javascript - HTML5读取mp4的视频元数据

转载 作者:技术小花猫 更新时间:2023-10-29 12:55:29 35 4
gpt4 key购买 nike

使用 HTML5 我试图获取位于 mp4 标题中的属性(即旋转)(我使用视频标签播放它),为此我试图获取构成标题的字节,并知道结构,找到这个原子。

有谁知道如何在 javascript 中执行此操作?

最佳答案

你可以使用mediainfo.js,它是使用 emsciptem 编译的 javascript 中 mediainfo (cpp) 的移植。

这是一个工作示例:https://mediainfo.js.org/

您需要包含 js/mediainfo.js 文件并将 mediainfo.js.mem 文件放在同一文件夹中。

您需要检查此文件的来源以了解其工作原理: https://mediainfo.js.org/js/mediainfopage.js

[...]

function parseFile(file) {
if (processing) {
return;
}
processing = true;
[...]

var fileSize = file.size, offset = 0, state = 0, seekTo = -1, seek = null;

mi.open_buffer_init(fileSize, offset);

var processChunk = function(e) {
var l;
if (e.target.error === null) {
var chunk = new Uint8Array(e.target.result);
l = chunk.length;
state = mi.open_buffer_continue(chunk, l);

var seekTo = -1;
var seekToLow = mi.open_buffer_continue_goto_get_lower();
var seekToHigh = mi.open_buffer_continue_goto_get_upper();

if (seekToLow == -1 && seekToHigh == -1) {
seekTo = -1;
} else if (seekToLow < 0) {
seekTo = seekToLow + 4294967296 + (seekToHigh * 4294967296);
} else {
seekTo = seekToLow + (seekToHigh * 4294967296);
}

if(seekTo === -1){
offset += l;
}else{
offset = seekTo;
mi.open_buffer_init(fileSize, seekTo);
}
chunk = null;
} else {
var msg = 'An error happened reading your file!';
console.err(msg, e.target.error);
processingDone();
alert(msg);
return;
}
// bit 4 set means finalized
if (state&0x08) {
var result = mi.inform();
mi.close();
addResult(file.name, result);
processingDone();
return;
}
seek(l);
};

function processingDone() {
processing = false;
$status.hide();
$cancel.hide();
$dropcontrols.fadeIn();
$fileinput.val('');
}

seek = function(length) {
if (processing) {
var r = new FileReader();
var blob = file.slice(offset, length + offset);
r.onload = processChunk;
r.readAsArrayBuffer(blob);
}
else {
mi.close();
processingDone();
}
};

// start
seek(CHUNK_SIZE);
}

[...]
// init mediainfo
miLib = MediaInfo(function() {
console.debug('MediaInfo ready');
$loader.fadeOut(function() {
$dropcontrols.fadeIn();

window['miLib'] = miLib; // debug
mi = new miLib.MediaInfo();

$fileinput.on('change', function(e) {
var el = $fileinput.get(0);
if (el.files.length > 0) {
parseFile(el.files[0]);
}
});
});

这里是项目源码的Github地址:https://github.com/buzz/mediainfo.js

关于javascript - HTML5读取mp4的视频元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18891921/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com