fluent-ffmpeg在electron框架中实现推流

需要准备这几个东西
electron框架
ffmpeg.exe应用程序 链接:https://pan.baidu.com/s/1TyzYlWG0p7cxpqrzziVRCA  提取码:ofd2(也可自行去官网下载)
fluent-ffmpeg插件
一个rtmp流地址

首先要做以下几步操作
1.将ffmpeg.exe文件放到electron项目文件夹中
2.安装插件和electron框架并设置推流地址相关的代码(electron相关的配置我之前的文章有),通过node的path模块找到第一步放的ffmpeg文件。ffmpeg是需要命令行来实现的,electron就可以使用命令行这里我通过fluent-ffmpeg插件来实现ffmpeg推送实时音频的功能。(当然也可以直接用node的子进程来实现https://blog.csdn.net/qq_40816649/article/details/103203263)

更多的ffmpeg和fluent-ffmpeg可以查看官方文档http://ffmpeg.org/ -- https://github.com/fluent-ffmpeg/node-fluent-ffmpeg

const {
  app,
  BrowserWindow,
  ipcMain,
  Menu}            = require('electron');
const ffmpeg       = require("fluent-ffmpeg");
const path         = require('path')

function connectRTMP(audio) {//连接rtmp流
  const ffmpegPath = path.join(__dirname, './ffmpeg.exe')
  command = ffmpeg()
    .setFfmpegPath(ffmpegPath)
    .input(`audio=${audio}`)
    .inputFormat("dshow")
    .addOptions([
      "-vcodec libx264",
      "-preset ultrafast",
      "-acodec aac",
      "-pix_fmt yuv422p"
    ])
    .format("flv")
    .output('rtmp://xxxxxxxxxx', {
      end: true
    })
    .on("start", function (commandLine) {
      console.log("commandLine: " + commandLine);
      win.webContents.send('isStart');//推流成功
    })
    .on("error", function (err, stdout, stderr) {
      win.webContents.send('isError');//推流失败
    })
    .on("end", function () {
      
    });
  command.run();
}

3.推流之后可以通过可以通过vlc播放该流地址来查看是否推流成功
fluent-ffmpeg在electron框架中实现推流_第1张图片

你可能感兴趣的:(electron,音视频)