如何从 Windows 10 应用程序直播到 Youtube?

How to live stream from Windows 10 app to Youtube?

我正在玩 YouTube 直播 API。到目前为止一切正常,但下一步是通过 RTMP 将网络摄像头数据流式传输到 YouTube。

Google Dev 的(优秀)文档中,它概述了广播的生命周期。但是,所有步骤都有详细记录,除了我感兴趣的步骤:

Step 3.2: Start your video

Start transmitting video on your video stream.

我能够使用 Open Broadcasting Software 流式传输到手动创建的 YouTube 直播活动,但我不知道如何从我的 Windows 10 应用程序进行。我查看了 MediaElement class,并能够在我的应用程序中捕捉网络摄像头预览。但是我只能找到另存为文件的方法。

还找到了有关 FFMPEG 的信息,应该可以完成这项工作,但我找不到在我的应用程序中使用 FFMPEG 的库/DLL。

我只是需要一些指导,下一步该看哪里,因为现在我完全不知道该怎么做。

/edit:我遇到了 MPlatform SDK,这听起来正是我想要的,但它要花 5000 美元....不是为了业余爱好:(

因此,正如您提到的,FFmpeg 确实支持通过 RTMP 进行流式传输(输出)。我不确定您要流式传输什么,因为取决于此,解决方案会或多或少地复杂一些。两种基本情况:

  1. 如果您尝试从屏幕流式传输现有文件或其他内容,您可以简单地使用 ffmpeg 作为 C# 应用程序中的命令行可执行文件。
  2. 如果您正在流式传输自定义位图数据,它会稍微复杂一些,您必须手动调用 libavformat/libavcodec。

所以,首先,获取一些 Windows 版本的 FFmpeg,例如来自 zeranoe. If you're going to go route 1, just call ffmpeg.exe in your application and you're done. If you want to go route 2, load the relevant libraries into your project and follow tutorials about writing files 使用 libavcodec/libavformat。如果你告诉我你想写什么数据,我可以提供更多细节。然后,只需使用任一方法打开 rtmp:// 输出流,您就可以开始了。 (使用 h264 作为视频编解码器,使用 aac 作为音频编解码器,并确保您的构建支持 x264,zeranoe 支持。)

正如@Ronald 和@rogerdpack 所说 - ffmpeg 可能是您最好的选择。

假设您希望在将视频发布到 YouTube 之前捕获和处理视频,请从其他专业软件中获取提示。

我很确定的直播应用程序VMix也是用.Net/WPF编写的,它使用以下方法:

  • 使用 windows DirectShow 库或他们支持的任何其他方法捕获视频流(他们有很多源类型)
  • 使用他们需要的任何过滤器在内部处理视频 - 但基本上他们只是操纵帧/音频样本
  • 将结果 A/V 数据流作为虚拟 DirectShow 捕获设备呈现
  • 将 ffmpeg 作为 子 windows 进程 启动,命令行开关指向它以从虚拟设备捕获并指示它发布到任何 RTMP 服务器

如果您只使用 VMix 就可以摆脱困境 - 那就去吧,它的基本版本非常便宜。无论如何,这就是我所做的,和你走的路一样。