【问题标题】:How to stream on YouTube using a Raspberry Pi?如何使用 Raspberry Pi 在 YouTube 上流式传输?
【发布时间】:2016-01-02 01:16:07
【问题描述】:

所以我正在尝试使用树莓派在 YouTube 上进行流式传输。这个想法是让一个树莓派用于流式传输连接的网络摄像头,另一个用于显示流,有点像监控摄像头。两个树莓派目前都在使用 Raspbian。

那么我是否可以在 Raspberry Pi 上直接流式传输到 YouTube。

【问题讨论】:

    标签: linux youtube raspberry-pi live-streaming


    【解决方案1】:

    您可以使用任何 Pi 支持的 RTMP/Flash 编码器来发布 YouTube 直播活动。一个例子是ffmpeg 其中can be compiled on Raspbian

    使用guide 创建您的 YouTube 直播活动。你可以找到各种编码器设置here

    一切准备就绪后,您就可以开始流式传输了。对于 640x480@25 700k 视频流,命令将类似于:

    ffmpeg -f v4l2 -framerate 25 -video_size 640x480 -i /dev/video0 -c:v libx264 -b:v 700k -maxrate 700k -bufsize 700k -an -f flv rtmp://<youtube_rtmp_server/<youtube_live_stream_id>
    

    【讨论】:

    • 我使用 Motion 尝试了类似的操作,但是当它归结为命令时,它总是会返回一个错误,指出相机模块未激活。这对我来说是个大问题,因为我使用的是 USB 网络摄像头而不是摄像头模块。所以我想知道你是否需要一个摄像头模块才能做到这一点,或者我需要做一些不同的事情来让 USB 网络摄像头成为视频的来源。
    • 您直接使用摄像头设备,如/dev/video0。尝试使用v4l2-ctl --list-devices列出所有可用的摄像头
    • 你知道 ffmpeg 是否可以流式传输网络摄像头的镜头,而 opencv 程序处理网络摄像头的镜头以进行单独的进程?
    • @Zypps987 我会说是的,您可以将一个输入映射到多个输出,即。将相同的流发送到执行视频处理的专用机器。
    【解决方案2】:

    “那么我可以在 Raspberry 上直接流式传输到 YouTube 派?”

    是的。但是您需要根据项目需要进行一些配置并获得不同的硬件。

    对于我的项目,一个昼夜直播到 youtube 的门口“安全摄像头”,我选择了一个运行 raspbian(无头)的 Raspberry Pi Zero W 和一个具有自动 IR 切换功能的摄像头模块和红外灯。

    我已经编辑了 raspbian 图像,所以 wificamera 模块的所有配置 interfaces、代码和 依赖项 我需要的是预装的,所以我可以刷一个 sd 卡,在 pi+camera+powersupply 设置中拍它,它就可以了。

    因此,为了让这个答案有帮助,您需要对 FFMPEG 进行大量研究知道它是什么,了解它的作用,然后将其安装到您的电路板上...您应该能够运行一些测试,让 FFMPEG 只是吐出一个来自相机的 10 秒长视频。如果您还没有读到那么远,我就不会再费心阅读我的漫谈了,因为事情即将变得具体

    所以,您的开发板已在线,您可以在网络上看到它,它有互联网,它有 ffmpeg,可以使用了。

    这是我用来启动直播的 ffmpeg “流命令”

    raspivid -o - -t 0 -vf -hf -fps 60 -b 12000000 -rot 180 | ffmpeg -re -ar 44100 -ac 2 -acodec pcm_s16le -f s16le -ac 2 -i /dev/zero -i - -vcodec copy -acodec aac -ab 384k -g 17 -strict experimental -f flv rtmp://a.rtmp.youtube.com/live2/SESSION_ID
    

    我通过逐个调整您看到的每个参数并以不同的组合来达到上面的这个“流命令”,我最终得到了一个非常清晰的 1080p 流除了在我的设置中偶尔出现的 wifi 延迟之外,完全没有缓冲问题。您将需要对每个参数的作用进行大量研究才能使事情变得正确,并相信我,在开始时弄清楚什么是什么会很痛苦。我会潜伏在 StackOverflow 和其他资源周围,然后到处看看,当涉及到这些 FFMPEG 命令时,你可以从你的设置中得到什么。

    要测试此 “流命令” 或您找到的任何其他命令是否适合您,只需 将末尾的 SESSION_ID 更改为您的流密钥 并在控制台中运行它。

    在您获得满意的输出后,自行确定您希望如何触发相机开始流式传输,如果您希望它在电路板准备好开始发送数据后立即开始录制,您就完成了通过将您的 "stream command" 放入 /etc/rc.local 中,它会尽快运行该命令。

    对于我的项目,我使用由太阳能电池板充电的 18650 电池作为电源,所以我必须注意我使用的电源,所以我写了一些 NodeJS 程序监视器。

    好的,现在对着风说话就够了。希望这对那里的人有所帮助,干杯。

    【讨论】:

      【解决方案3】:

      音频工作!这适用于我的树莓派 4,带有 rbp v1.3 摄像头和便宜的 USB 音频接口。还获取您可以在 alsamixer 中设置的默认音频:

      raspivid -o - -t 0 -vf -hf -fps 30 -b 6000000 | ffmpeg -f alsa -ac 1 -ar 44100 -i default -acodec pcm_s16le -f s16le -f h264 -i - -vcodec copy -acodec aac -ab 128k -g 60 -strict -2 -f flv rtmp://<destination/streamkey>
      

      【讨论】:

      • 虽然此代码可能会解决问题,including an explanation 关于如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的回答添加解释并说明适用的限制和假设。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-28
      • 2016-06-13
      • 2018-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多