ffmpeg.exe 推流

需要准备这几个东西
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播放该流地址来查看是否推流成功
————————————————
版权声明:本文为CSDN博主「养只猫」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_40816649/article/details/103205118

posted @ 2022-01-10 18:05  诡道也  阅读(143)  评论(0编辑  收藏  举报