1

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

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

步骤 3.2:开始您的视频

开始在您的视频流上传输视频。

我能够使用 Open Broadcasting Software 流式传输到手动创建的 YouTube Live Event,但我不知道如何从我的 Windows 10 应用程序中执行此操作。我查看了MediaElement类,并且能够在我的应用程序中捕获网络摄像头预览。但我只能找到另存为文件的方法。

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

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

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

4

2 回答 2

6

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

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

所以,首先,从zeranoe获取一些 FFmpeg 的 Windows 版本。如果您要走路线 1,只需在应用程序中调用 ffmpeg.exe 即可。如果您想采用路线 2,请将相关库加载到您的项目中,并按照有关使用 libavcodec/libavformat编写文件的教程进行操作。如果你告诉我你想写什么数据,我可以提供更多细节。然后,只需使用任何一种方法打开一个 rtmp:// 输出流,就可以了。(使用 h264 作为视频编解码器,使用 aac 作为音频编解码器,并确保您的构建支持 x264,zeranoe 就是这样做的。)

于 2015-08-12T18:13:45.657 回答
3

就像@Ronald 和@rogerdpack 所说的那样——ffmpeg 可能是你最好的选择。

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

我很确定的实时流媒体应用程序Vmix也是用 .Net/WPF 编写的,它使用以下方法:

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

如果你能侥幸只使用 VMix - 去吧,它的基本版相当便宜。反正我就是这样做的,走的路和你一样。

于 2015-08-12T21:03:17.340 回答