FFmpeg

[TOC] 此插件提供了 FFmpeg 的依赖支持,以赋予开发者广泛的图像、视频、音频编解码能力。

注意:注意:此功能需要在 Eagle 4.0 beta 7 以上版本才能使用

FFmpeg 依赖插件简介

「FFmpeg 依赖插件」是一款面向浏览器插件开发者的开发工具包,它将 FFmpeg 强大的多媒体处理能力封装为易用的依赖包。此工具包让开发者能在自身的插件中轻松实现图像、视频和音频格式的编解码,以及流媒体处理和格式转换等高级功能。通过集成「FFmpeg 依赖插件」,开发者可无缝拓展其插件的多媒体处理能力,为用户带来更多富有创意和实用性的功能。

安装 FFmpeg 依赖插件

  1. 进入插件中心
  2. 搜索并找到 FFmpeg 插件
  3. 点击安装 FFmpeg 插件

说明:请注意,当用户安装具有 FFmpeg 依赖的插件时,Eagle 会自动提示用户安装「FFmpeg 依赖插件」。因此,开发者无需专门编写代码让用户进行安装,只需为可能出现的错误提供相应提示。

如何使用 FFmpeg 依赖插件

如果你希望在你的插件中使用 FFmpeg 相关功能,你需要在插件的 manifest.json 文件中添加 dependencies 定义,让 Eagle 系统知道这个插件需要额外的扩展功能,示例如下:

{
    "id": "LBCZE8V6LPCKD",
    "version": "1.0.0",
    "platform": "all",
    "arch": "all",
    "name": "窗口插件",
    "logo": "/logo.png",
    "keywords": [],
    "dependencies": ["ffmpeg"],
    "devTools": false,
    "main":
    {
        "url": "index.html",
        "width": 640,
        "height": 480,
    }
}

窗口插件示例

你可以使用 eagle.extraModule.ffmpeg 来调用 FFmpeg 依赖插件提供的功能,示例如下:

eagle.onPluginCreate(async (plugin) => {

    // 检查 FFmpeg 依赖插件是否已经安装
    const isFFemptInstalled = await eagle.extraModule.ffmpeg.isInstalled();

    // 从打开插件中心,弹出安装 FFmpeg 依赖插件页面。
    if (!isFFemptInstalled) {
        await eagle.extraModule.ffmpeg.install();
        return;
    }

    // 获取 FFmpeg 二进制文件所在位置
    const ffmpegPaths= await eagle.extraModule.ffmpeg.getPaths();
    const ffmpegBinaryPath = ffmpegPaths.ffmpeg;
    const ffprobeBinaryPath = ffmpegPaths.ffprobe;

    // 使用 spwan 指令执行相关操作
    const spawn = require('child_process').spawn;
    const ffprobe = spawn(ffprobePath, [
    '-v', 'error',
    '-print_format', 'json',
    '-show_format',
    '-show_streams',
    "C:\\your_file.mp4"
    ]);
});

缩略图插件示例

你可以通过 extraModule 参数获取 FFmpeg 相关功能,示例如下:


module.exports = async ({ src, dest, item, plugin, extraModule }) => {
    return new Promise(async (resolve, reject) => {
        try {

            const ffmpegModule = extraModule.ffmpeg;

            // 检查 FFmpeg 依赖插件是否已经安装
            if (!ffmpegModule.isInstalled) {
        return reject(new Error(`ffmpeg is not installed.`));
        }

            // 获取 FFmpeg 二进制文件所在位置
            const { ffmpeg, ffprobe } = ffmpegModule.paths;

            // 使用 spwan 指令执行相关操作
            const spawn = require('child_process').spawn;
            const ffprobe = spawn(ffprobePath, [
            '-v', 'error',
            '-print_format', 'json',
            '-show_format',
            '-show_streams',
            "C:\\your_file.mp4"
            ]);

            return resolve(item);
        }
        catch (err) {
            return reject(err);
        }
    });
}