实现思路
- 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........')
}
存在问题
- 花屏问题
- 延时累计
不知道有什么方法可以优化