【问题标题】:How does Http live streaming works?Http直播是如何工作的?
【发布时间】:2011-09-08 08:46:47
【问题描述】:

我创建了一个示例应用程序来演示 HTTP 实时流的工作。
我所做的是,我有一个库将输入作为视频文件(avi、mpeg、mov、.ts)并为给定的视频文件生成片段(.ts)和播放列表(.m3u8)文件。当我从库中获取播放列表数据时,我将播放列表(作为字符串)存储在链接列表中。

我已经编写了一个基本的网络服务器,它将为用户请求的片段和播放列表文件提供服务。我正在从 iPhone safari 浏览器请求 playlist.m3u8 文件,它正在启动 QuickTime 播放器,它正在请求收到的播放列表文件中列出的 segment.ts 文件。在播放每个片段(在当前播放列表中列出)之后,它再次请求播放列表,我在其中响应下一个播放列表文件,其中包含其中列出的下一组 segment.ts 文件。

这就是我们所说的 HTTP 直播吗?
除了实现 HTTP 直播流媒体还需要做些什么之外,还有什么其他的吗?

谢谢。

【问题讨论】:

    标签: live-streaming http-live-streaming http-streaming


    【解决方案1】:

    不多。如果您正在获取媒体的输入流,对它们进行编码,以适合交付的格式进行封装,并通过将封装的媒体放置在可以从 HTTP 服务器请求它们的方式来准备分发,那么您就完成了。直播背后的想法是,它利用了现有的互联网架构,该架构已经针对合理大小的资源提供 HTTP 请求进行了优化。

    HTTP 流式传输使许多现有的 CDN 解决方案因其自定义流式传输协议、自定义路由和自定义内容缓存而过时。

    【讨论】:

      【解决方案2】:

      您还可以使用 mac os x 的媒体流验证器命令行应用程序来验证 HTTP Web 服务器生成的流。

      【讨论】:

        【解决方案3】:

        或多或少,但如果您希望服务器将文件推送到 iOS 设备,还需要处理自适应比特率流。这意味着您的范围从跟踪所有 TS 文件的单个“index.m3u8”文件扩展为主索引,然后主索引跟踪您希望在应用程序中支持的每个比特率的索引文件,然后单独跟踪 TS 文件以各自的比特率编码。

        这是大量的工作,但一旦你掌握了基础知识,大部分都是例行的/重复的。

        有关流媒体的更多信息,从 iOS 的角度来看,您的圣经应始终为 TN2224。严格遵守 Technote 中的规范,是您通过 App Store 审批流程(相对于流媒体)的最佳机会。

        有些人不费心(在过去的几个月里构建了一个流媒体应用程序,并查看了一大堆似乎不太遵守规则的视频应用程序的 HTTP 日志)——有时 Apple 会注意到,有时他们不会,有时玩家太大,Apple 无法干预。

        因此,它与您的应用程序功能的所有其他方面都经过 Apple 审查并没有太大区别。只是有一些方法可以确保你走在正确的轨道上。

        当然,从纯粹的技术角度来看,正如@psp1 所提到的,mediastreamvalidator 工具可以帮助您确定您的流是否 - 在它们的核心,即使不是就它们的整体能力而言 - 与预期的兼容HLS 实现。

        注意:您可以使用自己的编码解决方案(使用 ffmpeg,加号是您有更多的控制权,减号是需要时间来配置和正常工作。再加上一旦您开始谈论最小的规模,你会遇到一大堆其他问题。一旦你完成了所有的技术工作,你会发现这很容易。现在你必须真正弄清楚您需要获得哪个许可证才能拥有一个花哨的 H.264 编码器,并跳过所有法律/程序箍以获得一个)。

        对于没有可以填满足球场的法律/会计团队的开发人员来说,这是一种更简单的解决方案,IMO,通过 Encoding.com、Zencoder 等提供编码服务的网站更容易成为第三方或按月付费。好处是他们已经处理了所有的许可 BS,并且只是为您提供了一个简单的“付费使用”服务,这在您为客户构建项目时也可能非常有用。缺点是您现在依赖于 Zencoder/Encoding,另一方面,当您的编码作业因服务器关闭而失败一整天时,您会知道它的另一面,或者甚至在 API 不完全正常时按照您的预期行事或已记录在案!

        但无论如何,这就是您在将 HLS 服务器投入生产之前获得 Grok 的所有因素!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-12-11
          • 2019-05-10
          • 2011-10-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-12-24
          相关资源
          最近更新 更多