首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用节点和ffmpeg将以编程方式创建的视频流到youtube

使用节点和ffmpeg将以编程方式创建的视频流到youtube
EN

Stack Overflow用户
提问于 2020-09-23 13:58:49
回答 1查看 1.5K关注 0票数 3

我一直在尝试使用节点为youtube创建一个以编程方式创建的图像。我使用FFmpeg的成功非常有限。虽然我成功地创建和保存了一个映像,这要归功于有洞察力的线程,但我还没有将代码用于流到RTMP服务器。

代码语言:javascript
复制
const cp = require('child_process'),
    destination = 'rtmp://a.rtmp.youtube.com/live2/[redacted]', //stream token redacted
    proc = cp.spawn('./ffmpeg/bin/ffmpeg.exe', [
        '-f', 'rawvideo',
        '-pix_fmt', 'rgb24',
        '-s', '426x240',
        '-i', '-', //allow us to insert a buffer through stdin
        '-f', 'flv',
        destination
    ]);

proc.stderr.pipe(process.stdout);

(function loop() {
    setTimeout(loop, 1000 / 30); //run loop at 30 fps
    const data = Array.from({length: 426 * 240 * 4}, () => ~~(Math.random() * 0xff)); //create array with random data
    proc.stdin.write(Buffer.from(data)); //convert array to buffer and send it to ffmpeg
})();

但是,当运行此代码时,不会出现错误,而且一切似乎都正常,但是,YouTube报告说没有收到任何数据。有人知道这里出了什么问题吗?

更新:,这确实是违反直觉的,但是向目标添加一个斜杠(如'rtmp://a.rtmp.youtube.com/live2/[redacted]/' )会导致ffmpeg抛出一个通用的I/O error。这对我来说很奇怪。很抱歉,如果这个问题的答案很明显的话,我真的对ffmpeg缺乏经验。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-23 17:57:56

这是一个具体的ffmpeg问题,因此节点和javascript的内容是不必要的复杂问题(除非ffmpeg甚至没有执行)。在将ffmpeg命令添加到任何代码之前,最好让它在命令行接口中工作。

  • YouTube需要一个音频流,所以添加-re -f lavfi -i anullsrc输入选项来生成无声音频。
  • 对于直播流,输出必须为YUV 4:2:0,因此添加-vf format=yuv420p输出选项。
  • 还建议在流(示例)时添加-g-b:v-maxrate-bufsize输出选项。
  • 设置带有-c:v libx264 -c:a aac输出选项的编码器,以确保它不会自动选择名为flv1的糟糕的老式编码器,这是flv1 (-f flv)的默认设置。
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64029637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档