簡體   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