繁体   English   中英

如何使用mp4.js节点模块从mp4中读取元数据?

[英]How to read metadata from mp4 using mp4.js node module?

我正在尝试使用节点模块mp4js将mp4文件中的元数据标签读取到我的javascript中。 我遵循了该页面上提供的模型,但是存在一些问题。

我尝试了以下方法:

var mp4 = require('mp4js');

mp4({ file: 'small.mp4', type: 'local' }, function (err, tags) {
    // tags now contains your MP4 tags
    console.log('Tags: ' + tags)
    $scope.mp4Tags = tags;
});

并且遇到了Uncaught TypeError: Cannot read property 'join' of undefined

有人知道我在这里想念的吗? mp4可能没有标签吗? 我只是用Google搜索“示例mp4”并下载了一些内容。 这是我第一次尝试此模块,并且对Node来说还很陌生。

我也欢迎阅读mp4元数据的其他建议。

非常感谢您的宝贵时间,如果您需要我提供的其他任何信息,请告诉我。

编辑8.26.2015

按照Brad的建议,我尝试了以下代码从mp4中读取元数据:

    var child_process = require('child_process');
ls = child_process.spawn('ffmpeg/bin/ffprobe.exe', ['-print_format', 'json', 'out.mp4']);

ls.stdout.on('data', function (data) {
    console.log('stdout: ' + data);
    $scope.mp4data = data;
});

我通过遵循以下示例通过从命令行使用ffmpeg添加标题元标记来创建mp4.out。 这是我的输出的屏幕截图 这是我输入的命令:

ffmpeg -i in.avi -metadata title="my title" out.flv

使用上面的代码运行我的应用程序之后,存储在$scope.mp4data的值是一个本机缓冲区, 看起来像这样 我所看到的只是一些数字,但没有元数据标签。 如何查看使用上述命令设置的元数据(例如标题)? 我在论据中遗漏了什么吗? 还是我应该查看data以外的其他内容?

谢谢您的帮助。 由于重点已经转移,我可以将其发布为新问题。

编辑:解决方案

在布拉德的帮助下,我到达了这里:

$scope.mp4data = "";
ls.stdout.on('data', function (data) {
    $scope.mp4data = $scope.mp4data + data.toString();
});

ls.stdout.on('end', function (data) {
    $scope.mp4data = JSON.parse($scope.mp4data);
});

非常适合从mp4中读取元数据! 谢谢布拉德!

我建议使用FFprobe(来自FFmpeg项目)来代替。 它支持许多容器,包括MP4。

您可以使用ffprobe -print_format json使其输出可在Node.js应用程序中解析的JSON数据。

此处为一些示例: https : //stackoverflow.com/a/8191228/362536

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM