electron录制工具-视频保存、编辑页面

效果如下

electron录屏-保存录制视频

资源

导出视频使用了 mp4-wasm,基本使用,可参考 此文

想法

1、点击按钮导出,弹出选择保存文件夹
2、保存成功后,自动打开保存后文件夹窗口并关闭窗口

实现

获取保存文件夹路径,并利用 mp4-wasm 转换视频;

   // render
	const floder = await window.electron.ipcRenderer.invoke('select-folder-render')
	// 利用 mp4-wasm 转换视频
	const MP4 = await loadMP4Module();
		const encoder = MP4.createWebCodecsEncoder({
			width: exportCanvasRef.current?.width,
			height: exportCanvasRef.current?.height,
			fps: 60})
			....

当视频转换完成之后,把mp4wasm转换后的数据发送到main进程,进行保存处理

// render 
	await window.electron.ipcRenderer.invoke('exprot-blob-render',  { arrayBuffer: buf, folder: savaFolder }); 

main进程监听两个事件,一个是选择保存路径,一个是保存视频处理

ipcMain.handle('select-folder-render', async () => {
			const options: OpenDialogOptions = {
				properties: ['openDirectory'],
			};
			const results = await dialog.showOpenDialog(options)
			if (!results.canceled) {
				return results.filePaths[0]
			}
			return ''
		})
ipcMain.handle('exprot-blob-render', async (_, {arrayBuffer, folder} ) => {
			const buffer = Buffer.from(arrayBuffer);  
			const filePath = `${folder}/av-craft-${timestamp2Time(new Date().getTime())}.mp4`
			fs.writeFileSync(filePath, buffer);
			// 导出成功后,2s之后退出应用
			setTimeout(() => {
				openFolderInExplorer(folder)
				app.quit()
			}, 1 * 1000)
			return filePath
		})

代码

注:代码中播放视频是video 与 canvas 结合

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今天也想MK代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值