还是山东城市之音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,这才是真正做产品的人