Could not resolve “./lib-cov/fluent-ffmpeg“ from “./lib-cov/fluent-ffmpeg?commonjs-external“

背景

我在Electron+Vite+Vue3的桌面app中,Electron环境下使用到了fluent-ffmpeg。ts-node测试都没有问题,但加入electron/main.ts下后,就出现了这个问题:

Could not resolve “./lib-cov/fluent-ffmpeg” from “./lib-cov/fluent-ffmpeg?commonjs-external”

这个问题应该是导入之类的问题,也是一直没有找到解决方案。
采用了node-ffmpeg库,也是会报其他的错误。

Error: Could not dynamically require “./lib/decorators/timed”. Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.


解决方案

直接使用nodejs的child_process模块的exec直接调命令行,比如我这里的需求是生成视频首帧。

import { exec } from 'node:child_process'

function generateFirstFrame(videoPath: string, saveImagePath: string): Promise<string> {
  return new Promise<string>((resolve, reject) => {
    let cmd = `ffmpeg -y -i ${videoPath} -vframes 1 ${saveImagePath}`
    exec(cmd, (error: any, stdout: any, stderr: any) => {
      if (error) {
        reject(error)
        return
      }
      
      resolve(saveImagePath)
    })
  })
}

export { generateFirstFrame }

虽然直接调命令行需要自己封装一下,但也就不会遇到上面第三方库的问题了。
直接导入electron/main.ts下面也是可以使用的。
前提是先下好ffmpeg等库并加入环境变量。

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值