[英]Unable to use ffprobe in fluent-ffmpeg
我打算使用ffprobe函數提取視頻信息,這是我的代碼:
var FFmpeg = require('fluent-ffmpeg');
//...
var convert_using_ffmpeg = function (source, target) {
var tempfile = path.join(config.tmproot, path.basename(target));
new FFmpeg({ source: source })
.withVideoCodec('libx264')
.withVideoBitrate('512')
.withAudioQuality(5)
.withAudioCodec('libmp3lame')
.withSize('360x288')
//.ffprobe(function(err,data) {
// console.dir(data);
//})
.toFormat('flv')
.on('error', function (err) {
console.log('An error occurred: ' + err.message);
})
.saveToFile(tempfile, function () {
fs.rename(tempfile, target);
});
};
編譯器只是說我執行程序時Object #<FfmpegCommand> has no method 'ffprobe
。 fluent-ffmpeg API表示我應該在執行之前添加FFMPEG_PATH和FFPROBE_PATH環境變量,但事實是,即使在PATH環境變量中不存在ffmpeg,我也可以直接在命令行中執行它,並且node.js程序可以成功運行而無需調用ffprobe函數。 另外,API還說ffprobe與ffmpeg的大多數發行版一起提供,如果是的話,如何將ffprobe分別添加到環境變量中?
我目前正在使用fluent-ffmpeg 1.7.0。
嘗試在調用它之前設置FFprobe路徑:
ffmpeg.setFfprobePath("c:\\program files\\ffmpeg\\bin\\ffprobe.exe");
ffmpeg.ffprobe(sourceFile.path, function(err, metadata) {
if (err)
{
console.log(err);
}
else{
console.log(metadata);
}
});
我認為您閱讀的文檔實際上是針對2.x而非1.x的。
嘗試使用升級流利,ffmpeg的模塊npm install --save fluent-ffmpeg@2.0.0-rc1
我當時正在開發Electron項目,我的Node版本是10.xx,我遇到了這個問題並嘗試了多種方法,終於解決了我的問題:
在ffmpeg v4.0.0之后,如果您還沒有FF Binaries,則需要下載二進制文件
您需要將二進制路徑明確設置為節點項目。
const ffmpeg = require('fluent-ffmpeg');
var ffmpegPath = require("ffmpeg-binaries");
ffmpeg.setFfmpegPath(ffmpegPath);
ffmpeg.setFfprobePath("D:\\sandbox\\node-proj\\binaries\\ffprobe.exe");
對於ffprobe,對於其他擴展名也應執行類似的操作
這樣一來,無需在操作系統中安裝ffmpeg
const ffmpeg = require('fluent-ffmpeg');
var ffprobe = require('ffprobe-static');
ffmpeg.setFfprobePath(ffprobe.path);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.