2014-11-02 45 views
2

爲了從HLS Live Stream(用於重新編碼視頻)中提取原始CMSampleBufferRef,我嘗試使用AVAssetReader讀取HLS流(.m3u8文件)。由於AVAssetReader不支持直接從網絡流中讀取,因此我試圖首先將HLS m3u8索引文件中列出的.ts文件下載到本地驅動器,然後使用AVAssetReader將其讀回。但是,當我試圖用AVAssetReader打開.ts文件時,出現錯誤「此媒體格式不受支持」(Error Domain = AVFoundationErrorDomain Code = -11828「Can not Open」UserInfo = 0x7fd3aa723570 {NSLocalizedFailureReason = This media format is不支持)。使用AVAssetReader讀取HLS .ts段

有誰知道AVAssetReader是否支持從本地驅動器讀取.ts(mpeg2傳輸流)?如果沒有,是否有任何其他方式從HLS流創建/提取CMSampleBufferRef?謝謝!

回答

0

據我所知,事實並非如此。但是,從手動提取TS的音頻和視頻流似乎相當簡單。來自WWDC2014的WWDC會議513在VideoToolkit上舉行了一場精彩的會議,而且恰巧在高層次上討論了混合/解複用TS。也許我錯過了一些東西,但是看起來好像你可以取兩個第一塊數據並從這些塊中提取PPS和SPS,從這些塊中創建CMVideoFormatDescriptionRef,然後將開始代碼從以下NAL單元更改爲並將這些直接送入VTDecompressionSession。 This answer詳細介紹了這些步驟。

或者,這裏是a CocoaPod that remuxes TS2 into MP4