m3u8檔案是指UTF-8編碼格式的M3U檔案。M3U檔案是記錄了一個索引純文字檔案,打開它時播放軟體并不是播放它,而是根據它的索引找到對應的音視訊檔案的路徑進行播放。
簡單說,播放器通過m3u8檔案可以找到要播的具體音視訊。
格式如下是ts流檔案
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-ALLOW-CACHE:NO
#EXT-X-MEDIA-SEQUENCE:9350
#EXT-X-TARGETDURATION:10
#EXTINF:9.870
4cef7672d1-9350.ts
#EXTINF:9.875
4cef7672d1-9351.ts
安卓播放需要用video标簽封裝一下(現在大多安卓系統可以直接播放m3u8檔案),ios播放可以直接播.m3u8檔案!
Web上視訊至今還沒有統一的标準,目前大多是采用插件如flash,但是插件也沒有統一标準。H5提供一種通過video标簽來播放視訊的标準,官方給出支援格式如下:(此處引用W3C詳見W3C官網教程)
目前,video 元素支援三種視訊格式:
格式 | IE | Firefox | Opera | Chrome | Safari |
---|---|---|---|---|---|
Ogg | No | 3.5+ | 10.5+ | 5.0+ | No |
MPEG 4 | 9.0+ | No | No | 5.0+ | 3.0+ |
WebM | No | 4.0+ | 10.6+ | 6.0+ | No |
Ogg = 帶有 Theora 視訊編碼和 Vorbis 音頻編碼的 Ogg 檔案
MPEG4 = 帶有 H.264 視訊編碼和 AAC 音頻編碼的 MPEG 4 檔案
WebM = 帶有 VP8 視訊編碼和 Vorbis 音頻編碼的 WebM 檔案
當然,經過個人實踐,用video封裝其它格式如MP4 也可以在某些浏覽器上播放,官方給出三種支援格式可能是考慮相容性問題。比如谷歌360都能直接播放H5封裝的mp4(H264編碼),單某些火狐版本卻不支援。
但是在PC端,H5封裝檔案如大多直播流采用的.m3u8格式基本所有浏覽器都不支援播放(自己編解碼除外),是以H5的直播視訊播放常用于手機端。
在這裡順便說一下H5對手機端的支援問題,封裝mp4和封裝.m3u8對手機型号及qq、微信、浏覽器中播放等相容性也有不同情況。
1.播放器播放按鈕有些手機會出現、有些手機不顯示;
2.自動播放有些手機不支援、設定autoPlay也要手動去點選才能觸發播放;(ios:手動點選過一次後下次可以自動觸發)
3.iphone上視訊格式必須為mp4,直播為.m3u8,不支援flv,不支援rtmp協定(flash常用)的播放;
4.有些手機必須點選全屏才能觸發播放;(低版本手機)
5.H5不能把多個視訊合成一個視訊播放,切片.m3u8除外;
6.小米4、小米4c、noto等系列,H5封裝m3u8時,标簽相容性需要處理好,不能自動觸發播放,需要js寫一個點選觸發H5播放器播放的函數去觸發播放,否則播放不了,其它手機暫時未發現;
7.微信播放、qq播放雖然都是騰訊産品,播放也會有差别,微信相容性需要特别注意,有些時候因為标簽問題顯示黑框無法播放;
8.各中手機自帶浏覽器播放樣式會有很大差別,不建議使用過多标簽控制樣式;
9.橫豎屏觸發事件:windo.onoriertationchange在不同手機上有時會出現失靈現象,橫豎屏後的操作可能未執行。