使用 nodejs 将直播数据包发送到 youtube?

Posted

技术标签:

【中文标题】使用 nodejs 将直播数据包发送到 youtube?【英文标题】:Send live stream packets to youtube with nodejs? 【发布时间】:2020-12-06 04:08:11 【问题描述】:

所以我正在尝试创建一个能够将数据包作为实时流发送到 Youtube 的应用程序。所以基本上我将我的网址输入到程序中(rtmp://a.rtmp.youtube.com/live2),然后它会开始流式传输并发送 youtube 图像的数据包。我到处找,我不确定nodejs是否可以做到这一点。所以基本上,我可以使用我的 nodejs 应用程序 24/7 直播到 Youtube。如有任何问题,请随时发表评论。

【问题讨论】:

哇,我想这是不可能的,因为没有人回答 一直在寻找一种方法来做到这一点,如果你有办法做到这一点,请回复 你成功了吗?我正在尝试实现相同的功能,但坚持如何实现它。 【参考方案1】:

我不知道图像。但是,如果您有视频,则可以使用 ffmpeg 将其流式传输到 youtube。

方法:1

如果没有 nodejs,它可以像这样使用 cli 来完成。打开存储视频文件的 cli。并运行以下命令:

ffmpeg -re -i vieo_you_wanna_stream.mp4 -c copy -f flv rtmp://a.rtmp.youtube.com/live2/SECRET_STREAM_KEY

方法:2

如果您确实需要从 nodejs 服务器进行流式传输,则可以执行以下操作: 使用以下代码行创建一个名为 runCommand.js 的文件:

var spawn = require('child_process').spawn;
module.exports = (cmd, args, onData, onFinish) => 
    var proc = spawn(cmd, args.split(' '));
    proc.stdout.on('data', onData);
    proc.stderr.setEncoding("utf8")
    proc.stderr.on('data', err => console.log(err) );
    proc.on('close', onFinish);

现在在您的 app.js 文件中放入以下代码行:

const runCommand = require('./runCommand')

runCommand(
  'ffmpeg',
  '-re -i vieo_you_wanna_stream.mp4 -c copy -f flv rtmp://a.rtmp.youtube.com/live2/SECRET_STREAM_KEY',
  (data) => console.log(data),
  () => console.log('finished')
)

现在从 cli 运行

node app.js

如果您的视频路径 ffmpeg 和您的 youtube rtmp 链接正确,它将立即启动流。

注意:

如果您真的想用这种方法只将图片流式传输到 youtube,那么您可以使用任何类型的转换器将您的图片转换为视频。并使用此方法将视频流式传输到 youtube。

【讨论】:

以上是关于使用 nodejs 将直播数据包发送到 youtube?的主要内容,如果未能解决你的问题,请参考以下文章

使用Nodejs将数据发送到header.ejs

nodejs没有将websocket发送到浏览器

nodejs可以接受tcp服务器的数据吗

如何在nodejs中使用nodemailer进行批量数据发送?

NodeJS如何将数据发送到一个特定的客户端

直播相关-搭建直播流服务器nodejs