苹果在iPhone OS 3.0中包含了HTTP Adaptive Bitrate Streaming,特别是Safari自动处理。
我想以低成本的方式来玩这个游戏,但是我希望在最坏的情况下需要一个自定义的HTTP服务器,最好的情况是有趣的PHP脚本。
但首先我需要知道协议的差异或标准是什么。 作为协议,HTTP是相当简单的,但是自适应比特率意味着文件大小不同,大块位置在不同比特率下是不同的。例如,客户端是否告诉服务器关于正在下载的stream特别的东西,还是所有在服务器端处理?
消除terminal用户的缓冲暂停对现场和预先录制的videostream非常有吸引力,并且由于许多networking和政府正在限制非端口80stream量,所以通过HTTP执行这两个操作甚至更好。
-亚当
看起来苹果公司提出了一个IETF草案,有些人已经在研究分段器:
HTTP直播stream – 草稿 – pantos-http-live-streaming-01
http://tools.ietf.org/id/draft-pantos-http-live-streaming-01.txt
使用FFMpeg和开放源码分段器的iPhone HTTPstream式传输
http://www.ioncannon.net/programming/452/iphone-http-streaming-with-ffmpeg-and-an-open-source-segmenter/
好吧,看起来像HTTP服务器只是作为一个愚蠢的HTTP服务器。 围绕由Akamai提供的示例网站给我足够的信息,开始静态内容stream。
白皮书( http://www.akamai.com/dl/akamai/iphone_wp.pdf )提供了关于传输stream编码的信息,所以.tsstream是直接的。
编码器(或单独的分段器处理)将以MPEG-2 TS格式(.ts)以小内容段的序列产生H.264 / AAC内容。 还有一个引用段的M3U8索引文件; 在实况内容的情况下,M3U8不断更新,以反映最新的内容。
H.264编码应该是单通基线configuration文件,禁用帧重新sorting。 关键帧每5秒build议一次,理想情况下是所选段长度的一个平均除数。
该网站提供了一个M3U8文件,它只是一个M3U播放列表,但采用UTF-8字符编码格式。
然后该文件链接到每个比特率的M3U8文件。 我假设他们都必须在相同的位置(例如每2或10秒)进行一次切换,以便切换可以无缝。 它似乎完全由客户端驱动 – 客户决定如何测量带宽以及将获得哪个版本。
主文件的内容是:
#EXTM3U #EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=860000 hi/prog_index.m3u8 #EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=512000 med/prog_index.m3u8 #EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=160000 lo/prog_index.m3u8
然后每个其他文件是:
HI / prog_index.m3u8
#EXTM3U #EXT-X-TARGETDURATION:10 #EXT-X-MEDIA-SEQUENCE:0 #EXTINF:10, fileSequence0.ts #EXTINF:10, fileSequence1.ts #EXTINF:10, fileSequence2.ts #EXTINF:10, fileSequence3.ts #EXTINF:1, fileSequence4.ts #EXT-X-ENDLIST
MED / prog_index.m3u8
#EXTM3U #EXT-X-TARGETDURATION:10 #EXT-X-MEDIA-SEQUENCE:0 #EXTINF:10, fileSequence0.ts #EXTINF:10, fileSequence1.ts #EXTINF:10, fileSequence2.ts #EXTINF:10, fileSequence3.ts #EXTINF:1, fileSequence4.ts #EXT-X-ENDLIST
LO / prog_index.m3u8
#EXTM3U #EXT-X-TARGETDURATION:10 #EXT-X-MEDIA-SEQUENCE:0 #EXTINF:10, fileSequence0.ts #EXTINF:10, fileSequence1.ts #EXTINF:10, fileSequence2.ts #EXTINF:10, fileSequence3.ts #EXTINF:1, fileSequence4.ts #EXT-X-ENDLIST
这适用于HTML 5video标签:
<video width=”640” height=”480” > <source src=”content1/content1.m3u8” /> </video>
还有很多没有答案的问题,但是这可能足以开始。
-亚当
Akamai如此描述:
从iPhone OS 3.0和QuickTime X开始,您可以从普通Web服务器上通过HTTP发送stream式audio和video,以在iPhone,iPod touch或其他设备(如台式计算机)上播放,而不受Progressive Downloads的限制。
新的stream媒体协议支持多比特率,并根据networking条件自动切换到最佳比特率,以获得stream畅的高质量播放体验。 此实现还通过HTTPS提供媒体encryption和用户authentication,允许发布者保护他们的工作。 Live和On Demand内容可以使用3.0规范提供。
HTTP Streaming to iPhone由三部分组成:服务器组件,Akamainetworking和客户端软件。
在典型configuration中,硬件编码器将音videoinput转换为包含H.264video和AAC或HE-AACaudio的MPEG-2传输stream。 编码stream然后被stream分割器分成一系列短的媒体文件。 分段器还创build并维护包含创build的短媒体文件列表的索引文件。 这些文件被放置在Web服务器上。
内置在iPhone OS中的媒体播放器提供到索引文件的链接,然后按顺序请求媒体文件并播放它们,而没有任何暂停或段之间的间隙
所以你显然需要stream分割器才能正确创build内容。 HTTP服务器在这项技术中是通用的。
没有窗分段器 – iPhone分段器不能正常工作,原因不明。 您必须注册iPhone开发者才能下载分段器
Svitoch,你有雪豹吗? 它来与苹果stream分段器。 只需inputman mediastreamsegmenter即可查看手册。