nodejs 推送图片到 RTMP 延时和花屏 有什么办法优化

2022-07-06 17:58:53 +08:00
 yangheng4922

实现思路

代码实现

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........')
}

存在问题

不知道有什么方法可以优化

593 次点击
所在节点    问与答
2 条回复
codefredzeng
2022-07-11 01:27:38 +08:00
最先获取到的图片数据一定是 base64 吗?是不是可以考虑直接将图片的二进制数据喂给 ffmpeg ,不用经过 base64 转换?
yangheng4922
2022-07-12 00:47:33 +08:00
@codefredzeng #1 转格式这一步没啥问题 我这边是应用层 算法那边给的就是 base64 的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/864495

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX