2011-03-24 93 views
4

我已經m3u8文件與所有的TS文件。 MPMoviePlayerController通過流媒體服務器上的http請求播放它們。但我想在本地獲取這些文件,以便以後再次播放它們而不需要任何連接。iPhone MPMoviePlayerController:下載文件,而流媒體本地播放它們

我設法在我的設備上本地下載m3u8文件和所有TS文件,我編輯m3u8文件指向本地.ts而不是http,但是我無法從這個版面讀取它們。 (VLC可以做得很好)

有沒有一種方法可以在播放時下載片段(避免2次下載),然後用MPMoviePlayerController或其他方式在本地播放它們。

+0

很好的問題 - 據我所知,的MPMoviePlayerController無法從本地URL(文件系統)作爲的MPMoviePlayerController的網絡部分發揮M3U8流將總是試圖談判「正確的「帶寬/從m3u8片段的配置文件 - 這部分似乎並沒有在本地工作,併成爲showstopper。如果這是正確的(如我所假設的),那麼你將不得不在服務器上提供和替代文件 - > MP4。 – Till 2011-03-24 19:49:16

回答

3

.m3u8是Apple HTTP Live Streaming,對吧?我認爲你所要做的只是違背該技術的設計。您應該公開原始文件並允許它被下載。

從我所瞭解的情況來看,在流媒體設計中,您並沒有明確地訪問這些作品以便將它們放回到一起。例如,Netflix通過Silverlight使用流式傳輸,其中一個好處(對Netflix來說)就是它可以保護數據免受保存,就好像它被下載一樣。此外,由於HTTP Live Streaming允許流在運行中切換比特率,因此它的設計使得每個時間片可以以任意數量的比特率進行編碼,而且它們都不是規範的。

理論上,可能有一種方法可以收集特定比特率的所有片並將它們重新編碼爲單個視頻。但蘋果的播放API不會給你這樣的機會。

而不是HTTP實況流,請考慮漸進式下載。只需提供原始視頻文件(如果需要,將其轉碼爲iPhone所喜歡的內容)。如果您的服務器配置正確,則回放API將執行小的請求來獲取文件的特定塊,而不是一次完成所有的事情,並且這恰好是正確流式傳輸的第二步。我希望我能找到我讀到的地方,所以我可以給它正確的名字。如果您需要快速解決方案,Amazon S3就可以用這種方式進行服務。

但要注意,Apple's docs說,

如果您的應用程序提供的視頻超過 蜂窩網絡和視頻 超過要麼持續10分鐘或 5 MB的數據在5分鐘內, 你需要使用HTTP Live 流媒體。 (漸進式下載可以 用於較小的剪輯。)

+0

謝謝,我註定要下載mp4。這將是2下載,一個完整的mp4文件和其他分段文件取決於客戶的願望 – Vassily 2011-03-25 09:30:05