2014年7月21日 星期一

HTTP Live Streaming

其實今天並沒有要研究HLS,只是要找一個不需掛載任何播放插件的方法,播放網路上的串流。結果找上了HLS就稍後try了一下…

HTTP Live Streaming (HLS)其實是Apple所制定的,主要是給iOS裝置的safari瀏覽器上播放串流。

什麼情況下可以使用HLS:
  • Streaming audio or video to iPhone, iPod touch, iPad, or Apple TV
  • Streaming live events without special server software
  • Sending video on demand with encryption and authenticationtt
Http Live Streaming 的架構其實簡單,主要是將需票串流的檔案切成小片段(.ts),再用一個index file(.m3u8)記錄每個小片段組成播放清單。
所以需把mp4檔案,切成HLS的架構,所幸ffmpeg就可支援了。

ffmpeg -y -i taiwan-240p.mp4 -pix_fmt yuv420p -vcodec libx264 -acodec libfaac -r 25 -profile:v baseline -b:v 1500k -maxrate 2000k -force_key_frames 50  -map 0 -flags -global_header -f segment -segment_list ./hls/index.m3u8 -segment_time 10 -segment_format mpeg_ts -segment_list_type m3u8 ./hls/segment%05d.ts

最後把 index.m3u8 塞給播放端即可。
居然神奇的pi是可以播Http Live Streaming的格式…太強了。
Http Live Streaming主要在支援行動裝置播放的,可以直接用HTML5的video tag,給Apple iOS的safari讀取和播放。例如:

<video  src="http://192.168.101.253/streaming/index.m3u8"   height="300" width="400" controls  > </video>

測試在iPhone和iPad的safari和chrome都可以播放:


測試Android 4.4.2的chrome,可以播放,不過剛開始需拉動一下進度bar影像才會出來,不然只有聲音。看來Android的支援度還沒有很完整。



參考資料:

沒有留言: