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