2012-05-02 63 views
4

我已經使用以下方法iOS4: how do I use video file as an OpenGL texture?成功地在openGL中渲染視頻幀。將視頻渲染到iOS中的OpenGL紋理並進行清理

但是,當您想要擦除(跳轉到播放中的某個點)時,此方法似乎會下降,因爲它只是按順序向您提供視頻幀。

有沒有人知道這種行爲可以成功實現的方式?

+1

Stephen建議在他的答案中使用'timeRange'屬性來解決類似的問題:http://stackoverflow.com/a/5508955/19679,但我認爲不用重新創建AVAssetReader就可以使用它。 –

+1

AVAssetReader是「一次性」的,必須重新創建才能從新位置讀取(需要登錄才能閱讀):https://devforums.apple.com/message/383762 –

+1

確實需要重新創建AVAssetReader,這似乎發生得足夠快,因爲它不會對應用程序產生負面影響 – RyanSullivan

回答

-1

實現此目的的一個簡單方法是將視頻導出爲一系列幀,將每個幀存儲爲PNG,然後通過查看特定偏移量處的PNG來「擦洗」。這使您可以隨機訪問圖像流,但需要先解碼整個視頻並將所有數據保存在磁盤上。這也涉及每個幀在被訪問時進行解碼,這會消耗CPU,但只要你沒有做太多其他事情,現代iPhone和iPad就可以處理它。

+1

我不知道你是否已經完成了數學計算,但如果PNG是自然場景的話,它們基本上是未壓縮的,所以10分鐘的視頻將會是10分鐘* 60秒* 30fps * 1024 * 1024 * 4/1e9 - 即75 GB,您將不得不在某處存儲。所以這不會發生。 –