ffmpeg想必大家都不陌生,基本涉及到媒体资源的操作的时候都会用到它,今天聊聊在electron中如何使用。 我总结了两种办法,一种是网上流行的做法,一种是通用的方法
网上主流做法
const ffmpeg = require('fluent-ffmpeg')
const ffmpegPath = require('@ffmpeg-installer/ffmpeg')
const ffprobePath = require('@ffprobe-installer/ffprobe')
ffmpeg.setFfmpegPath(ffmpegPath.path.replace('app.asar', 'app.asar.unpacked'))
ffmpeg.setFfprobePath(ffprobePath.path.replace('app.asar', 'app.asar.unpacked'))
如果是用electron-vite创建的工程则是
import ffmpeg from 'fluent-ffmpeg'
import ffmpegPath from '@ffmpeg-installer/ffmpeg'
import ffprobePath from '@ffprobe-installer/ffprobe'
ffmpeg.setFfmpegPath(ffmpegPath.path.replace('app.asar', 'app.asar.unpacked'))
ffmpeg.setFfprobePath(ffprobePath.path.replace('app.asar', 'app.asar.unpacked'))
这种做法其实就是告诉ffmpeg在哪里,因为fluent-ffmpeg需要ffmpeg的环境
这种做法的有一个问题就是 不共享,比如一些操作我可能另开进程以操作,那么这段代码就得在写一遍设置ffmpeg环境的地址
直接配置临时环境变量
这种做法我是根据windows上安装ffmpeg上得到的灵感,windows安装ffmpeg就是下载ffmpeg然后设置环境变量即可。 直接下载ffmpeg 然后放在工程目录的resources中
const modelPath = path.join(process.resourcesPath, 'app.asar.unpacked/resources/ffmpeg')
// 将 ffmpeg 路径添加到环境变量 PATH 中
const currentPath = process.env.PATH || ''
process.env.PATH = `${modelPath}${path.delimiter}${currentPath}`
app.asar.unpacked/resources/ffmpeg是个目录 这样子进程中就不需要再配置ffmpeg的地址了
app.asar.unpacked/resources/ffmpeg是个目录,目录下有以下几个文件即可