小编DDC*_*DDC的帖子

我如何通过 ffmpeg 将 Node.js 中生成的画布流式传输到 youtube/任何其他 rtmp 服务器?

我想在 Node.JS 中生成一些图像,将它们编译成视频并将它们流式传输到 youtube。为了生成图像,我使用节点画布模块。这听起来很简单,但我想连续生成图像,并实时传输结果。我对这整件事很陌生,在阅读了互联网上的大量资源后,我正在考虑做的是:

  1. 使用 打开 ffmpeg spawn('ffmpeg', ...args),将输出设置到目标 rtmp 服务器
  2. 在画布中生成图像
  3. 将canvas的内容转换为buffer,通过stdin写入到ffmpeg进程中
  4. 在 YouTube 上欣赏结果

但事情并没有那么简单,不是吗?我看到人们分享他们的代码,涉及在浏览器上运行的客户端 JS,但我希望它是一个 Node 应用程序,这样我就可以从远程 VPS 运行它。有没有一种方法可以让我在不使用浏览器中的 p5 之类的内容并捕获窗口来重新传输它的情况下执行此操作?我的思维过程是否足够?现在我并不真正关心性能/资源使用情况。提前致谢。

编辑:

我花了一点时间,但无法让它工作......这是我的代码:

const { spawn } = require('child_process');
const { createCanvas } = require('canvas');
const fs = require('fs');


const canvas = createCanvas(1920, 1080);
const ctx = canvas.getContext('2d');
const ffmpeg = spawn("ffmpeg",
    ["-re", "-f", "png_pipe", "-vcodec", "png", "-i", "pipe:0", "-vcodec", "h264", "-re", "-f", "flv", "rtmp://a.rtmp.youtube.com/live2/key-i-think"],
    { stdio: 'pipe' })

const randomColor = (depth) => Math.floor(Math.random() * …
Run Code Online (Sandbox Code Playgroud)

streaming ffmpeg node.js node-canvas

6
推荐指数
1
解决办法
2211
查看次数

标签 统计

ffmpeg ×1

node-canvas ×1

node.js ×1

streaming ×1