【问题标题】:Java, serve HLS live video streamsJava,提供 HLS 直播视频流
【发布时间】:2023-04-01 02:37:01
【问题描述】:

我知道这个主题并不容易,但我正在寻找一个 Java 类来将 HLS 流从服务器发送到客户端。

我正在生成越来越多的文件:

out.m3u8
out0.ts
out1.ts
out2.ts
out3.ts
out4.ts
out5.ts
out6.ts

这是使用 ffmpeg 从原始来源生成的:

ffmpeg -i http://sourceurl.com:9981/stream/channel/1232131 out.m3u8

我可以使用 VLC 播放它。

不知何故,我需要将这个直播流式传输给客户。

此时,我并不真正关心不同的比特率,我只想在移动浏览器和桌面浏览器中进行直播。

我找到了这个课程:

https://github.com/Red5/red5-hls-plugin/blob/master/plugin/src/main/java/org/red5/stream/http/servlet/PlayList.java

这可能会做类似的事情。

我已将 hls.js 引入我的应用程序,希望将其用于桌面。

但是,HLS 现在应该可以在没有 hls.js 的 IOS 设备上运行。

应该如何从服务器提供 HLS 内容?很难找到任何好的和简单的例子来做到这一点。

任何人都知道执行此操作所需的步骤吗?

我对 Wowza 和 Red5 进行了一些研究,但不确定它们在这个阶段可以为我提供什么,而且设置起来似乎过于复杂,只是为了提供一些文件。但请向我解释为什么不是这样。

【问题讨论】:

    标签: java ffmpeg video-streaming red5 wowza


    【解决方案1】:

    HLS 中的 H 代表 HTTP。 HLS DASH HDS 流畅流媒体等流媒体技术的重点是不需要特殊的服务器。只是普通的HTTP。您可以使用 nginx 之类的东西,或者任何可用于 Java 或任何其他语言的 HTTP 服务器类/库。

    【讨论】:

    • 您介意详细说明吗?所以通常我会得到像 out.m3u8 文件,然后是 rollout10.ts out11.ts 等等文件......我需要以某种方式打开它们并将它们提供给客户端。它只是提供字节,当一个字节中没有更多字节时,继续下一个字节?还是我需要阅读 out.m3u8 并处理某种协议?我不确定说实话,但我想用 java 而不是 nginx 来实现完全控制。
    • 您不对文件做任何事情。只是招待他们。通过 http 发布指向 m3u8 文件的链接。播放器将根据需要进行 http 获取并拉取文件。
    • 此人想通过 HLS 进行“直播”;标准 HTTP 服务器不这样做。 Red5 允许您流式传输到服务器并通过 HLS 提供服务,实际上 Red5 Pro 将其包含在一个工作包中。
    • 作为参考,实时 HLS 意味着 m3u8 和 ts 文件不是静态的。
    • 你们把我搞砸了。我在 twitch.tv 开发 HLS 系统。 2015 年,我们通过标准 HTTP 使用 HLS 交付了 241,441,823,059 分钟的 LIVE 视频。所以,是的,我可以明确地说标准 HTTP 服务器可以做到这一点。
    猜你喜欢
    • 2020-05-15
    • 2013-08-30
    • 1970-01-01
    • 2016-11-08
    • 1970-01-01
    • 2022-08-04
    • 2013-01-02
    • 1970-01-01
    • 2015-10-20
    相关资源
    最近更新 更多