还是山东城市之音FM99.1这个令人喜爱的电台,有一阵子,RTMP的播放方式突然出问题了,
于是就去分析官方iOS客户端蜻蜓.fm中的地址以及蜻蜓.fm的Web页面播放地址,
最终,又整了下面这个FFmpeg版的命令行收听方式。
准备工作
分析工作
先后分析了蜻蜓.fm的iOS应用和蜻蜓.fm的Web播放页面,
确认都是通过HTTP Live Streaming的方式来进行播放的,
很赞这种方式,比RTMP不知要强到哪里去。分析过程暂且不表,以下是最终结果了:
Web方式的HTTP Live Streaming播放地址: http://42.96.141.199/live/1665.m3u8?bitrate=48 iOS应用中的HTTP Live Streaming播放地址: http://s.qd.qingting.fm/10.129.53.126/live/1665/24.m3u8
整合工作
ffplay.exe -nodisp http://42.96.141.199/live/1665.m3u8?bitrate=48
或者
ffplay.exe -nodisp http://s.qd.qingting.fm/10.129.53.126/live/1665/24.m3u8
蜻蜓.fm的技术做的很好
顺藤摸瓜了下,其HTTP Live Streaming服务使用了阿里云青岛机房的服务器并做了负载均衡
iOS客户端做的也不错,协议用的很好,而且用的很正规,当然,HTTP Live Streaming本身就是Apple家的东西嘛
iOS客户端通过友盟做了统计分析
Web播放页面中,对于JavaScript和Flash的整合做的挺好,对HTTP Live Streamming进行处理的QTFlashPlayer.swf文件是通过http://s1.qingting.fm/js/463653675aa7.js这个JavaScript来加载的,将其加载到了整个HTML页面的最底部:
<object name="QTFlashPlayer" width="1%" height="1%" align="middle" id="QTFlashPlayer" data="http://s1.qingting.fm/QTFlashPlayer.swf?8" type="application/x-shockwave-flash"><param name="src" value=""><param name="autoPlay" value="true"><param name="FlashVars" value="javascriptCallbackFunction=$q()._onFlashLoaded"><param name="allowscriptaccess" value="always"><param name="poster" value="images/poster.png"></object> </body> </html>
看好蜻蜓.fm,这才是真正做产品的人