繁体   English   中英

ffmpeg 在运行回调之前不等待 function 完成

[英]ffmpeg doesnt wait for function to finish before running callback

我正在使用 ffmpeg 从视频中提取一些帧。 不幸的是,节点 js 在运行回调之前不等待 ffmpeg 完成任务 function 我如何确保在运行回调之前任务已经完成?

我已经为此苦苦挣扎了几个小时,非常感谢您的帮助


function callback() {

console.log("All done!")
}
async function main()
{
    try {
        var process = new ffmpeg("star_wars_film_scene.mp4");
        process.then(function (video) {
            video.fnExtractFrameToJPG("frames/", {
                every_n_frames : 1500
            }), callback()
        }, function (err) {
            console.log('Error: ' + err);
        });
     } catch (e) {
        console.log(e.code);
        console.log(e.msg);
     }

    }
     


  main()

我不能确切地说你的安装出了什么问题。 我可以说这个示例代码直接取自 ffmpeg 模块页面(稍作调整以添加更多错误处理)对我来说很好。 因此,如果您调整代码以像这样工作并确保 ffmpeg 模块和 ffmpeg 可执行文件都已正确安装,它应该可以工作:

const ffmpeg = require('ffmpeg');

try {
    const process = new ffmpeg('full path to your video here');
    process.then(function(video) {
        // Callback mode
        video.fnExtractFrameToJPG('D:/temp', {
            frame_rate: 1,
            number: 5,
            file_name: 'my_frame_%t_%s'
        }, function(error, files) {
            if (error) {
                console.log(error);
                return;
            }
            console.log('Frames: ' + files);
        });
    }, function(err) {
        console.log(err);
    });
} catch (e) {
    console.log(e.code);
    console.log(e.msg);
}

当我第一次在我的系统上运行此代码时,我收到一个错误,因为 ffmpeg 可执行文件(安装在我的系统上)不在我的系统路径中,所以当 ffmpeg 模块试图运行 ffmpeg 可执行文件时,它没有找到并且它 output 一个错误消息,大意。 一旦我修复它以将其包含在我的路径中,它就会按预期工作并从我传递的视频中捕获 5 帧。

暂无
暂无

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

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