javascript - ffmpeg的元数据在 Electron 应用程序中未定义

标签 javascript ffmpeg electron

我正确安装了 ffmpeg 我可以通过在 cmd 中编写 ffmpeg 来检查它,这给了我这个结果

img

现在,在我的index.html 中的 Electron 应用程序中,我正在从用户获取输入并将自定义事件发送到位于index.js 入口点的应用程序的 Electron 端

index.html

<script>
    const electron = require('electron');
    const { ipcRenderer } = electron;

    document.querySelector('form').addEventListener('submit', (e) => {
        e.preventDefault();
        const { path } = document.querySelector('input').files[0];

        ipcRenderer.send('video:submit', path);
    });
</script>

并使用 ffmpeg.ffprobe 我试图将视频的元数据更新为 Electron 端的输入,如下所示:

const electron = require('electron');
const ffmpeg = require('fluent-ffmpeg');

const { app, BrowserWindow, ipcMain } = electron;

app.on('ready', () => {
    const mainWindow = new BrowserWindow({});
    mainWindow.loadURL(`file://${__dirname}/index.html`);
});

ipcMain.on('video:submit', (event, path) => {
    ffmpeg.ffprobe(path, (err, metadata) => {
        console.log(metadata);
        //console.log(metadata.format.duration);
    });
});

它控制台元数据未定义,当我取消注释 console.log(metadata.format.duration) 它说

typeError: cannot read property 'format' of undefined

我做错了什么?


所以我设置了两个新的环境变量,现在当我 console.log(error) 时出现其他错误:

{ Error: spawn C:\Users\Borys\Documents\videoinfo\ffmpeg\bin ENOENT
at exports._errnoException (util.js:1024:11)
at Process.ChildProcess._handle.onexit (internal/child_process.js:192:19)
at onErrorNT (internal/child_process.js:374:16)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickCallback (internal/process/next_tick.js:180:9)
code: 'ENOENT',
errno: 'ENOENT',
syscall: 'spawn C:\\Users\\Borys\\Documents\\videoinfo\\ffmpeg\\bin',
path: 'C:\\Users\\Borys\\Documents\\videoinfo\\ffmpeg\\bin',
spawnargs:
[ '-show_streams',
 '-show_format',
 'C:\\Users\\Borys\\Documents\\portfolio\\img\\header_video.mp4' ] }`

(我必须将其粘贴为代码,因为它说我的帖子包含格式不正确的代码)

最佳答案

好的,感谢 @Alexander Leithner 和 this question我想到了。所以错误是我的环境变量应该是:

  • FFMPEG_PATH,其值为 ffmeg.exe 的路径
  • FFPROBE_PATH 包含 ffprobe.exe 路径的值
  • 值为 C:.......\ffmpeg\bin 的 PATH

关于javascript - ffmpeg的元数据在 Electron 应用程序中未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50138368/

相关文章:

javascript - 如何确保用户运行应用程序的最新版本而不是缓存版本

FFMPEG 在视频末尾添加图像

typescript - Electron 和 TypeScript( Electron 生成器): "Cannot use import statement outside a module"

javascript - mark.js 突出显示特定单词

javascript - 如何将变量从链接传递到表单

javascript - 如何在博客文章标题后面插入图片

ffmpeg - 使用 directshow 输入和 JPEG 图像序列输出为 FFmpeg 启用 QSV

c++ - 使用 ffserver 进行 RTMP 流式传输

python - 是否可以从python中以 Angular 接收rpc-websocket json请求?

angular - Electron 到 Angular 通信