electron集成了node和谷歌瀏覽器,這使得在頁面開發的基礎上可以使用node命令行相關的東西。
這裏我們用到了node的child_process子進程這個包。
const { exec } = require('child_process')
下面說一下我的使用場景吧
公司的業務是要推送一個aac格式的音頻出去,但是瀏覽器上的flash推流推出去的格式是speex不符合要求。
於是就想到了用ffmpeg進行推流,但是這個東西需要命令行下進行,這裏electron就很好的解決了這個問題。
下面這個是獲取電腦上音視頻設備的接口(雖然瀏覽器也可以獲取這裏是舉個例子),html發來訂閱事件觸發主進程的事件去創建命令行命令。
exec(
path.join(__dirname, './ffmpeg.exe') + ' -list_devices true -f dshow -i dummy',
{ encoding: 'utf-8' },
(error, stdout, stderr) => {
win.webContents.send('getDevice',{stderr})
});
回調中的stderr就是獲取到的設備字段但是需要做字符串切割,還有一點要注意的是記得設置encoding避免返回的字段中有中文的時候會出現亂碼