Apple 在 iPhone OS 3.0 中包含了 HTTP 自适应比特率流,特别是 Safari 会自动处理这一点。
我想以低成本的方式使用它,但我希望它在最坏的情况下需要自定义 HTTP 服务器,在最好的情况下需要有趣的 PHP/etc 脚本。
但首先我需要知道协议差异或标准是什么。HTTP 作为一种协议相当简单,但自适应比特率意味着文件大小不同,块位置在不同比特率下不同等。例如,客户端是否在下载流时告诉服务器有关流的任何特殊信息,或者它是全部在服务器端处理?
消除最终用户的缓冲暂停对于实时和预先录制的视频流都非常有吸引力,并且考虑到许多网络和政府正在限制非端口 80 流量,通过 HTTP 进行这两种操作会更好。
- HTTP 自适应比特率流的技术细节是什么,尤其是 Apple 的实现?
-亚当
更新
看起来 Apple 提出了 IETF 草案提案,并且有些人已经在研究分段器:
HTTP 直播流 - draft-pantos-http-live-streaming-01
http://tools.ietf.org/id/draft-pantos-http-live-streaming-01.txt
iPhone HTTP 流与 FFMpeg 和开源分段器
http://www.ioncannon.net/programming/452/iphone-http-streaming-with-ffmpeg-and-an-open-source-segmenter/
好的,看起来 HTTP 服务器只是充当一个愚蠢的 HTTP 服务器。浏览 Akamai 提供的示例网站为我提供了足够的信息来开始使用静态内容流。
http://iphone.akamai.com/
白皮书 ( http://www.akamai.com/dl/akamai/iphone_wp.pdf ) 提供了有关传输流编码的信息,因此 .ts 流很简单。
该网站提供了一个 M3U8 文件,它只是一个 M3U 播放列表,但采用 UTF-8 字符编码格式。
然后该文件链接到每个比特率的 M3U8 文件。我假设他们必须在相同的位置都有剪辑(例如,每 2 或 10 秒),以便可以无缝切换。它似乎完全是客户端驱动的——客户端决定如何测量带宽以及它将获得哪个版本。
主文件的内容是:
然后每个其他文件是:
嗨/prog_index.m3u8
med/prog_index.m3u8
lo/prog_index.m3u8
这适用于 HTML 5 视频标签:
还有很多未解决的问题,但这可能足以开始。
-亚当
Akamai是这样描述的:
因此,您显然需要流分段器才能正确创建内容。HTTP 服务器在该技术中是通用的。
没有 Windows 分段器 - iPhone 分段器由于未知原因无法正常工作。您必须是注册的 iPhone 开发者才能下载分段器
Svitoch,你有雪豹吗?它带有苹果流分段器。只需输入 man mediastreamsegmenter 即可查看手册。