和APPLE家的HTTP Live Streaming差不多,主要异同如下:
1、文件切片采用MP4的格式而非ts格式;
2、索引在APPLE家是foo.m3u8文件,Adobe家是manifest文件;
3、Adobe家除了支持APPLE家支持的H.264/AAC之外还支持VP6/MP3编码;
4、不同于APPLE家,内容保护通过Flash Access Server来实现;
5、通过Adobe AIR可达范围更广(Mac OS、Windows、Linux都可以),但目前显然过不了APPLE家 iOS的审核;
6、两家同样都支持点播和直播;
7、APPLE家提供了一个全套的解决框架“Open Source Media Framework”。
8、HTTP Dynamic Streaming作为Adobe自家RTMP的补充。它自己的优点就不提了。相较之下RTMP可以独家提供:更低的延时、更短的载入时间、动态缓冲和基于流的加密。
更多内容请看:http://www.adobe.com/products/httpdynamicstreaming/
如何做内容加密
HTTP Live Streaming支持在m3u8中指定一个key文件(目前支持16-octet 的AES-128加密),然后每个视频切段都使用这个key来加密。
可以所有切段共用一个key,也可以几个切段使用一个key,最细可以一个切段使用一个key。
然后把这些key文件加上验证功能,比如登陆才能读取到,这样就可以达到内容加密的效果了。
建议使用HTTPS来传输key文件。
注意:每个新key文件都会发起一个新的HTTP请求,因此每个切段一个key会大大加大服务器的连接数。
cache时的2个注意事项
1、最好不要用HTTPS来传送视频文件和m3u8文件,因为这样很容易穿透cache服务器。
2、另外,cache服务器必须知道m3u8文件缓存的时间不能大于一个视频切段的长度。
如何做冗余
可以在m3u8中指定2个BANDWIDTH相同的外部地址,这样客户端会自己在其中一路不可达时切换到另一路。
附APPLE官方HTTP Live Streaming的Overview地址:
http://developer.apple.com/library/ios/#documentation/networkinginternet/conceptual/streamingmediaguide/UsingHTTPLiveStreaming/UsingHTTPLiveStreaming.html
1、更长的分段导致更长的延迟和更长的初始化时间,切换码率(只能在切换分段的时候切)也更慢;
2、更短的分段导致对m3u8文件更密集的请求,从而导致更多网络流量;
3、Apple推荐的分段时长为10秒;
4、MPEG-TS流有比通常文件更多的头信息,会导致文件整体码率明显上升。可以使用Apple家的分段软件来减少和压缩其中不必要的头;
5、Apple家文档说10s分段的话会有约30s时延;
6、m3u8中可阻止客户端缓存文件,否则客户端会为了提高seek效率而缓存文件。