const child_process = require('child_process')
let child = child_process.spawn('ffmpeg', [
  '-f', 'image2pipe',
  '-i', '-',
  '-vcodec', 'libx264',
  '-f', 'flv',
  'rtmp://127.0.0.1:56413/live/test'
]);
child.stdout.on('data', function (data) {
  console.log(data.toString());
});
child.stderr.on('data', function (data) {
  console.log(data.toString());
});
child.on('close', (code, signal) => {
  console.log('ffmpeg 进程中断', code, signal);
});
// 图片数据写入管道
function writeImg (base64) {
  let imgData = Buffer.from(base64, 'base64')
  child.stdin.write(imgData)
}
// 模拟循环获取图片数据
for (let i = 0; i < 100; i ++) {
  writeImg('/9j/4AAQSkZJRgABAQAA........')
}
不知道有什么方法可以优化
|      1codefredzeng      2022-07-11 01:27:38 +08:00 最先获取到的图片数据一定是 base64 吗?是不是可以考虑直接将图片的二进制数据喂给 ffmpeg ,不用经过 base64 转换? | 
|  |      2yangheng4922 OP @codefredzeng #1 转格式这一步没啥问题   我这边是应用层  算法那边给的就是 base64 的 |