置頂感謝:
http://m.itdecent.cn/p/4b15f79cdc33
http://m.itdecent.cn/p/75aa645531d2
??首先聲明,我對(duì)m3u8和ts視頻文件和視頻播放流媒體相關(guān)的知識(shí)并不懂。我寫(xiě)這個(gè)博客只是為了記錄一下我開(kāi)發(fā)中遇到的問(wèn)題和我的解決思路,如果能幫到你就更好了。
我的需求
??開(kāi)會(huì)時(shí)提到,應(yīng)用中已有直播功能,需要做直播回放。后臺(tái)初始計(jì)劃返回ts 文件的完整地址(http://xxxxxxx.ts)列表樣式。一頭霧水,跳進(jìn)百度谷歌開(kāi)始各種查。下面是我查到的我認(rèn)為有效的信息。
資料查詢
??m3u8這個(gè)文件可以用你可以下載下來(lái),用txt格式打開(kāi)看下,基本上文件并不大,打開(kāi)來(lái)看就是一個(gè)列表,除去開(kāi)頭的和結(jié)尾的一些信息以外,中間部分的意思就是某個(gè)ts文件(一般用的都是相對(duì)路徑)有多久的播放時(shí)長(zhǎng),m3u8相當(dāng)于把這些片段連起來(lái),構(gòu)成一個(gè)完整的視頻。
??所以,對(duì)于當(dāng)前項(xiàng)目的需求的話,解決思路就是通過(guò)后臺(tái)提供的ts文件路徑表,我在App端創(chuàng)建一個(gè)m3u8文件,然后根據(jù)m3u8的格式,創(chuàng)建一個(gè)字符串寫(xiě)入到m3u8文件中。然后,用播放器去播放本地的m3u8文件。至此,我以為可以,但是并沒(méi)有播放出來(lái)。
嘗試方案:
先列出來(lái)我的嘗試方案:
1.本地創(chuàng)建m3u8文件,文件中寫(xiě)入頭尾數(shù)據(jù)和ts播放列表(相對(duì)路徑)。 結(jié)果:失敗(原因:播放器讀取這個(gè)m3u8 文件之后,根本找不到ts文件,肯定播放失敗);
2.本地創(chuàng)建m3u8 文件,文件中寫(xiě)入頭尾數(shù)據(jù)和ts播放列表(完整路徑)。結(jié)果:失?。ň唧w原因不詳);
3.本地創(chuàng)建m3u8 文件,并且把ts文件下載到和m3u8 同一個(gè)文件夾下,m3u8 文件中寫(xiě)入頭尾數(shù)據(jù)和ts播放列表(相對(duì)路徑)。結(jié)果:失敗(具體原因不詳,但是應(yīng)該和嘗試方案2原因類(lèi)似)。
??大致嘗試了以上三種方案,均以失敗告終,于是又跳進(jìn)百度谷歌各種查,發(fā)現(xiàn)這篇博客。需要搭載一個(gè)本地服務(wù)器,我的嘗試方案2哥方案3好像就缺少了這個(gè)環(huán)節(jié)。果真,按照這篇博客的介紹,給我的代碼稍作改動(dòng),視頻播放出來(lái)了,大功告成。
結(jié)論:
??總結(jié):iOS 播放ts文件,需要先根據(jù)ts文件名列表生成m3u8文件,(如果m3u8 中放的是ts的相對(duì)路徑,需要把ts文件下載到和m3u8 同樣目錄下).在手機(jī)本地搭載本地服務(wù),即可播放。方案總結(jié)如下:
iOS播放TS文件思路圖.png
