我想在iOS中使用OpenGL ES 2.0播放視頻。我無法獲得示例代碼或如何實現此目標的起點。任何人都可以幫助我嗎?如何在iOS中使用OpenGL播放視頻?
2
A
回答
2
您正在尋找的是實時獲取視頻的原始緩衝區。我相信你需要查看AVFoundation
並以某種方式提取CVPixelBufferRef
。如果我沒有記錯,你有幾種方法;一個是在特定時間點播,另一個是在塊中快速迭代幀的處理,而你可能需要的是實時接收幀。因此,你可以提取一個原始的RGB緩衝區,它需要被推送到紋理,然後繪製到渲染緩衝區。
我建議你創建一次紋理(每個視頻)並儘量使其儘可能小,但要確保視頻幀適合。您可能需要(兩功率)紋理POT因此要獲得從視頻的寬度紋理尺寸,你需要這樣的東西:
GLInt textureWidth = 1.0f;
while(textureWidth<videoWidth) textureWidth <<= 1; // Multiplies by 2
所以紋理大小預計會更大然後視頻。要將數據推送到紋理,您需要使用紋理子圖像glTexSubImage2D
。它需要一個指向你的原始數據和矩形參數的指針,在那裏保存數據然後是(0, 0, sampleWidth, sampleHeight)
。此外,紋理座標必須進行計算,使其不在範圍[0,1]中,而是對於x
:[0, sampleWidth/textureWidth]
。
,那麼你只需要把它放在一起:
- 有一個系統,以保持生成視頻的原始樣本緩衝區
- 製作紋理以適應視頻大小
- 在新的樣本更新紋理使用
glTexSubImage2D
- 將數據加載到紋理後,將紋理繪製爲全屏矩形(請注意線程)
您可能需要注意視頻方向,轉換。因此,如果可能的話,請使用設備上以不同方向錄製的一些視頻測試您的系統。我認爲現在有一個支持來接收已經正確定位的緩衝區。但是默認情況下,樣本至少曾經是「錯誤的」;縱向錄製的視頻仍然具有風景中的樣本,但是該資產提供了轉換矩陣或方向。
相關問題
- 1. 如何在ios swift中播放視頻
- 2. 如何在iOS中的UITableViewCell中播放視頻(自動播放)
- 3. iOS視頻播放
- 4. 如何播放視頻在iOS 6
- 5. 如何在iOS視頻播放器中播放webm文件
- 6. 如何在ios中播放視頻播放器?
- 7. 在視頻播放中播放視頻
- 8. 在iOS應用中播放Youtube視頻
- 9. 如何在iOS中使用MPMoviePlayerController播放視頻流
- 10. 如何在ios中使用Mediaplayer框架播放視頻?
- 11. 如何在視頻播放器中播放視頻
- 12. 在ios中使用url在桌面視圖中播放視頻
- 13. 如何在YouTube視頻播放器中播放YouTube視頻中的視頻android
- 14. 使用youtube-ios-player-helper播放視頻
- 15. 使用swift播放視頻2 IOS 9
- 16. 使用網址播放視頻ios 6
- 17. 使用video.js在ios上播放視頻內嵌視頻?
- 18. 如何使用openGL創建視頻播放器
- 19. iOS如何通過URL播放視頻
- 20. 無論如何在iOS上播放視頻內嵌視頻?
- 21. 如何在iOS中播放NSData音頻或視頻?
- 22. iOS無視頻會話播放視頻
- 23. 如何在UIView在iOS應用程序中播放視頻流?
- 24. 如何使用Actionscript 3在IOS上播放youtube視頻3
- 25. 如何使用jwplayer在IOS設備上播放mp4視頻
- 26. 在iOS中播放視頻失敗
- 27. 在UITableViewCell中播放視頻iOS
- 28. 在ios中播放視頻6
- 29. 無法在iOS中播放視頻4
- 30. 的iOS播放視頻EXC_BAD_ACCESS
我在谷歌上搜索過。您提到的鏈接僅顯示如何顯示圖像或3D模型。我想用OpenGL播放視頻。基本上,我想將視頻幀作爲紋理傳遞給OpenGL着色器。 @AmitSrivastava –
即使我無法找到如何開始解決這個問題。 – Parth
@ R.Jari:你是否成功地在openGL下玩過ios視頻?如果是,你會介意分享代碼嗎?感謝您的提前! – loki