实现思路
- nodeJS 获取到图片的 base64 数据
- 通过 ffmpeg pipe 推送到 rtmp
代码实现
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........') } 存在问题
- 花屏问题
- 延时累计
不知道有什么方法可以优化
