【问题标题】:Is it possible to build transcoding&streaming applications using Stream Processing Engines such as Storm?是否可以使用 Storm 等流处理引擎构建转码和流媒体应用程序?
【发布时间】:2026-02-23 13:15:01
【问题描述】:

我很想知道使用 SPE 构建这样一个系统是否可行或好主意。在我们的实验室中,我们使用 mkvtoolnixXuggler 库进行转码,在 20 个节点的集群上开发了基于 Hadoop 的转码和流服务。而且效果很好。但是,我不太熟悉 Storm 在多媒体操作(如转码)中的用法。我只知道 Storm 在实时大数据分析中被大量使用。 我的系统旨在处理(从各种视频格式转码为 mpeg4)来自视频传感器的实时视频数据,同时它应该能够将转码的视频块流式传输到仪表板。

我如何使用 Storm 来实现这一点,或者任何关于如何构建这样一个系统的建议都非常受欢迎!

【问题讨论】:

  • 如果您有一个使用 Hadoop 正在运行的实现,为什么要切换到 Storm?你的 MapReduce 程序有什么“性质”?是一堆 Map-Reduce 作业还是单个 Map-Reduce 甚至是仅 map 作业? mkvtoolnix 和 Xuggler 是如何工作的?是否适用于整个视频流或单个帧?或者是否使用了一些窗口技术?
  • 基本上,它是一个 MR 作业链,它们适用于单个帧速率
  • 从工作的 Hadoop 实例迁移到 Storm 的原因是我的教授的愿望,他不在乎它是否正确,他只是希望我使用 Storm 来实现它。但是我不确定Storm是否适合这种用法

标签: java video-streaming real-time transcoding apache-storm


【解决方案1】:

使用 Storm 应该相当简单,而且似乎很合适。您可以将每个帧编码为单个元组,并将所有地图和化简代码转换为单个拓扑中的 bolts。作为连接模式,您可以将shuffleGrouping 用于“map-bolts”,将fieldGrouping 用于“reduce-bolts”。

【讨论】: