使用 VLC 将屏幕流式传输到 Youtube

11 vlc-media-player

我希望使用 VLC 流式传输到 Youtube 并制作以下​​命令字符串:

cvlc -vv screen:// --live-caching=0 --screen-fps=30 --screen-width=1920 --screen-height=1080 --sout='#transcode{vcodec=h264,scale=Auto,width=1920,height=1080,acodec=mp3,ab=128,channels=2,samplerate=44100}:std{access=rtmp,mux=ffmpeg{mux=flv},dst=rtmp://a.rtmp.youtube.com/live2/xxxxxxxxxxx}'
Run Code Online (Sandbox Code Playgroud)

如果我用视频文件替换 screen:// ..,则该流会成功上传到 Youtube。

但我不知道为什么它不会投射屏幕。Youtube 简要显示连接但没有图像。流不会被 VLC 中断,它显示上传继续进行,但它从未被 YT 接收。任何帮助,将不胜感激。

作为记录,我可以在 VLC 中离线查看屏幕而无需流式传输。

我收到一个特别突出的错误:

core mux warning: late buffer for mux input (repeated while streaming) 
Run Code Online (Sandbox Code Playgroud)

但是在上传视频的情况下也会发生这种情况,然后似乎不会引起问题。

日志

以下是我尝试设置 HTTP 服务器流式传输桌面同时也在 VLC 中播放时的日志。我确实得到了一个图像,但只有一个静态图像,即流的第一帧。

https://pastebin.com/EzSWuAM3

它告诉我很多我的电脑很慢,但它是 Corei5,VLC 进程只占 9%,还有很多。保存到文件工作正常。

笔记

我有两个显示器。不知何故,这可能是一个问题,我不知道。

更新

我通过增加缓冲区来解决掉帧问题live-caching=2500。现在它可以在本地 HTTP 服务器上正常工作,但仍然不能与 YT 一起使用。

Rya*_*yan 0

  1. 初始化问题

    在您进行流式传输之前,YouTube 有一项奇怪的要求:在获得注册流程批准后,您必须访问一次流式传输页面来初始化您的流式传输配置文件。

    1. 创建您的个人资料。
    2. 等待批准。
    3. 在尝试流式传输之前,请访问https://www.youtube.com/live_dashboard一次。

    屏幕截图:创建流

    屏幕截图:开始屏幕

  2. 流密钥(流名称)问题

    我还注意到您没有将 Stream key 传递到 VLC 中。如果没有流密钥(流名称),YouTube 将拒绝任何连接。VLC 在 RTP 协议的参数中支持此功能,因此它可能支持 RTMP 协议,但我不会屏住呼吸。我注意到 RTMP 没有在 VLC 的 GUI 中列为可用的流媒体协议,因此我非常怀疑 VLC 甚至可以流媒体 RTMP 协议。Adobe 已试图惩罚任何使用 RTMPdump 开源项目的人,声称其违反了 DMCA。https://en.wikipedia.org/wiki/Real-Time_Messaging_Protocol#rtmpdump由于 RTMP 需要加密才能安全地进行流式传输,因此 VLC 可能不支持流式传输到 YouTube。

    您可以从 VLC 流式传输到另一个应用程序,然后让该应用程序通过 RTMPdump CLI 程序将流传输到 YouTube。http://docs.livestreamer.io/install.html#windows-binaries

    屏幕截图:在此处查找您的流密钥

  3. VLC 声誉问题

    在过去和现在,我曾多次尝试让 VLC 将桌面屏幕记录到文件中,但它总是惨败,要么拒绝尊重我选择的帧速率,要么使用不正确的编解码器标签对文件进行编码,导致文件仅在媒体播放器中播放音频,或任何其他问题。VLC 并不像人们想象的那样强大。我会完全跳过 VLC 并使用专用的流媒体程序,例如 Open Broadcaster Software Studio (OBS Studio)。OBS Studio是OBS的更新版本: https: //obsproject.com/