node执行cmd运行ffmpeg脚本
一,需要安装模块.
1,fluent-ffmpeg
2,http
二,执行思路
1,使用http创建服务,接收参数
1),数据流来源
2),ffmpeg转流参数
3),数据流输出服务器
2,根据参数集成ffmpeg命令推流
3,将线程储存在map里面等待关闭
三,部分核心代码
//用来储存线程
var maps = new Map();
//读取模块新建ffmpeg.
ffmpeg = require('fluent-ffmpeg');
//新建 ffmpeg 可执行对象 ,inputPath 是视频输入流地址
var command = new ffmpeg(inputPath);
//设置ffmpeg.exe地址 ,path是ffmpeg.exe的存放地址
command.setFfmpegPath(path)
//可设置参数 -re 整理视频流,如果没有这个参数 视频流的播放速度可能出现问题
//其他的参数可以通过请求参数调整
command.inputOptions('-re')
//打印启动信息
command.on('start', function (commandLine) {
console.log('[' + new Date() + '] Vedio is Pushing !');
console.log('commandLine: ' + commandLine);
})
//打印错误信息
command.on('error', function (err, stdout, stderr) {
console.log('error: ' + err.message);
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
})
//打印结束信息
command.on('end', function () {
console.log('[' + new Date() + '] Vedio Pushing is Finished !');
})
//添加转换参数 ,可以通过请求参数调整
command.addOptions([
'-vcodec copy'
])
//设置输出地址
command.output(outputPath, {
end: true
})
//执行转码
command.run();
//添加线程到map
maps.set(jsonstr.in,command);