有没有办法通过javascript获得webm的帧宽和帧高属性?

有没有办法通过javascript获得webm的帧宽和帧高属性?,javascript,node.js,video,webm,mediainfo,Javascript,Node.js,Video,Webm,Mediainfo,以下是我尝试访问的属性: 我已经看过mediainfo.js()了,老实说,我还没弄明白 我还看到有人提到可以使用“media info”(媒体信息)CLI来实现这一点,但我找不到任何关于如何实现这一点的说明 我也尝试过使用wmic,例如: var exec = require('child_process').exec exec('wmic datafile where name="C:\\\\some_path\\\\MyTestCourse\\\\test_conversion

以下是我尝试访问的属性:

我已经看过mediainfo.js()了,老实说,我还没弄明白

我还看到有人提到可以使用“media info”(媒体信息)CLI来实现这一点,但我找不到任何关于如何实现这一点的说明

我也尝试过使用wmic,例如:

var exec = require('child_process').exec
exec('wmic datafile where name="C:\\\\some_path\\\\MyTestCourse\\\\test_conversion\\\\testProject001\\\\videos\\\\video0.webm" get NaturalVideoWidth ', function(err, stdout, stderr){
        if(!err){
            console.log(stdout)
        };
    });
但我认为它无法访问我正在寻找的内容

我需要能够在终端上运行,作为我正在做的视频批量转换的一部分。我使用nodejs和一个批处理文件来完成这个任务

我非常感谢您提供的任何见解或建议。

这是一个关于我的机器的工作™️) Node.js中的脚本。希望有帮助。我使用

const{promises}=require(“fs”);
const MediaInfoFactory=require(“mediainfo.js”);
函数getReadChunkFunction(文件句柄){
异步函数readChunk(大小、偏移量){
常量缓冲区=新的Uint8Array(大小);
等待fileHandle.read(缓冲区,0,大小,偏移量);
返回缓冲区;
}
返回readChunk;
}
异步函数readMetaData(文件路径){
const mediaInfo=wait MediaInfoFactory({格式:“JSON”,coverData:true});
const fileHandle=wait promises.open(filepath,“r”);
const fileSize=(wait fileHandle.stat()).size;
const readChunk=getReadChunkFunction(fileHandle);
const result=wait mediaInfo.analyzeData(()=>fileSize,readChunk);
返回结果;
}
//用法示例:
readMetaData(uu dirname+“/big-buck-bunny_traile.webm”)。然后((结果)=>{
const data=JSON.parse(结果);
const videoMetaData=data.media.track.find((项)=>item[“@type”]==“Video”);
const{Width,Height}=视频元数据;
控制台。原木(“宽度”,宽度);
控制台。日志(“高度”,高度);
});
mediainfo
的原始输出如下所示,展开snippet进行检查

{
“媒体”:{
“@ref”:”,
“轨道”:[
{
“@type”:“General”,
“唯一标识”:“94077224337973666327274415816295077565”,
“VideoCount”:“1”,
“音频计数”:“1”,
“格式”:“WebM”,
“格式/版本”:“1”,
“文件大小”:“2165175”,
“持续时间”:“32.480”,
“总比特率模式”:“VBR”,
“总比特率”:“533294”,
“帧率”:“25.000”,
“帧数”:“812”,
“StreamSize”:“121714”,
“可处理”:“是”,
“编码日期”:“UTC 2010-05-20 08:21:12”,
“编码应用程序”:“索伦森挤压”,
“编码的_库”:http://sourceforge.net/projects/yamka"
},
{
“@type”:“Video”,
“StreamOrder”:“0”,
“ID”:“1”,
“唯一标识”:“38308775201223106”,
“格式”:“VP8”,
“CodecID”:“V_VP8”,
“持续时间”:“32.480”,
“比特率”:“439316”,
“宽度”:“640”,
“高度”:“360”,
“PixelAspectRatio”:“1.000”,
“DisplayAspectRatio”:“1.778”,
“帧率模式”:“CFR”,
“帧率”:“25.000”,
“帧数”:“812”,
“压缩模式”:“有损”,
“延迟”:“0.000”,
“StreamSize”:“1783621”,
“语言”:“en”,
“默认值”:“是”,
“强制”:“否”
},
{
“@type”:“Audio”,
“StreamOrder”:“1”,
“ID”:“2”,
“唯一标识”:“110618262945856186”,
“格式”:“Vorbis”,
“格式设置楼层”:“1”,
“CodecID”:“A_VORBIS”,
“持续时间”:“32.480”,
“比特率模式”:“VBR”,
“比特率”:“64000”,
“频道”:“1”,
“抽样调查”:“44100”,
“抽样计数”:“1432368”,
“压缩模式”:“有损”,
“延迟”:“0.000”,
“延迟源”:“容器”,
“StreamSize”:“259840”,
“流量比例”:“0.12001”,
“编码库”:“Xiph.Org libVorbis I 20100325(无处不在)”,
“编码库名称”:“libVorbis”,
“编码的库版本”:(无处不在),
“编码库日期”:“20100325(无处不在)”,
“语言”:“en”,
“默认值”:“是”,
“强制”:“否”
}
]
}

}
mediainfo.js看起来很有希望。你没有弄明白什么部分?你读过用法示例吗?我看过所有的示例。我试过运行npm install mediainfo.js,但虽然我了解示例文件的内容以及每个部分在做什么,但我不明白它们是如何组合在一起的,或者如何将其整合到我的existin中g项目。我想这是我在软件包方面遇到的一个问题。我主要是普通的javascript。你知道有什么教程或资源可以帮助我实现它吗?它是一个wasm模块,所以到处都有异步调用。但是node.js中的IO也是异步的。我想你知道如何使用异步函数,对吗?不管怎样,我已经发布了例如,已检索到
宽度
高度
,我将把其余的留给您。它有效!谢谢!