问题:
为了让 iOS 应用能够将视频流式传输到应用商店,我们需要一个 HLS 版本。
有什么问题?
Android 对 HLS 支持不好,由于其他原因,我们需要存储相同内容的 MP4 和 HLS 文件。
MP4 和 HLS 有什么区别,为什么需要同时存储两者?
MP4 是一个存储 H.264 视频和 AAC 音频的容器,以便在 HTML 5 浏览器中实现最佳兼容性——如果浏览器不支持使用相同 MP4 文件但通过 flash 播放的 HTML 5 中的 MP4 视频,jsvideo 播放器通常会有 flash 回退。
HLS 是一种协议,其中文本文件 (.m3u8) 包含对播放列表的引用,播放列表本身引用 .ts 文件 (或 m2ts),它们是 mpeg-2 传输流,不要与 mpeg-2 视频混淆。.ts 文件是相同 H.264 视频和 AAC 音频的容器。
我为什么抱怨?
从 MP4 文件创建 HLS 文件和播放列表需要时间
(最重要的是)我们现在在 S3 上存储了两倍的数据
我为什么要在乎?如果您存储 MP4 和 HLS 的 S3 账单是每月 1 万美元,那么现在只需 5 千美元。或者换一种说法,如果您为在 MP4 中存储数据支付 10 万美元,那么在 MP4 和 HLS 中存储相同的内容将花费 20 万美元。
我想要什么?
我只想存储 .ts 文件,并使用该文件同时为桌面用户、iOS 用户和 Android 用户提供服务。
可能吗?
HLS 不需要 5-10 秒的 .ts 段而不是一个大文件吗?
从 IETF 草案 7 和协议版本 4 开始,HLS 支持标签 EXT-X-BYTERANGE,它允许您将媒体段指定为较大 URL 的字节范围(子范围)。
.ts 文件是否与 HTML5 视频兼容?
显然不是。它们是与 MP4 不同的容器,但包含相同的视频和音频内容。值得研究如何一次存储原始视频/音频数据,并在必要时简单地使用正确的容器。如果 JS 视频播放器可以在浏览器不支持 HTML 5 MP4 的情况下即时将 HTML 5 MP4 文件转换为 Flash 视频,那么为什么不能对 M2TS 数据做同样的事情呢?
我可能在某种程度上是无知的,但也许有人可以对这个问题有所了解,并可能提出解决方案。