簡體   English   中英

無法在流利的ffmpeg中使用ffprobe

[英]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,我遇到了這個問題並嘗試了多種方法,終於解決了我的問題:

  1. 在ffmpeg v4.0.0之后,如果您還沒有FF Binaries,則需要下載二進制文件

  2. 您需要將二進制路徑明確設置為節點項目。

    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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM