簡體   English   中英

在 SceneKit iOS 中渲染流式視頻的最有效方法是什么?

[英]What is the most efficient way to render a streamed video in SceneKit iOS?

我正在開發一個顯示流式視頻的 SceneKit 應用程序。 在其中我創建了一個平面,將 UIImage 附加到它,然后保存 CALayer。 后來我得到一個壓縮視頻stream,我把它解壓成一個CGImage。 然后我用新的 CGImage 更新 CALayer 的內容。 這一切都有效,但是幀速率非常慢,而且似乎不是流式傳輸或解壓縮問題。

我的問題是:有沒有更快、更有效的方法來做到這一點? 我已經對 SCNPlane 進行了旋轉和偏移轉換。 但是,這些應該只是矩陣更新,不應更改渲染時間,因為您必須通過相同的矩陣 go 以在其原始坐標中渲染 SCNPlane。

轉換為UIImageCGImageRef是一項昂貴的操作。 它以非最佳格式創建圖像的 CPU 表示,然后需要再次轉換為 GPU 表示 ( MTLTexture )。 SceneKit 支持將AVPlayer實例作為材質屬性的contents 它應該是最簡單和最有效的方法,將一個視頻放到一個平面上。

更新:如果您的應用程序管道是圍繞CVImageBufferRef (又名CVPixelBufferRef )構建的,那么CVMetalTextureCacheCVMetalTextureCacheCreateTextureFromImage是您應該利用的 API 來有效地生成MTLTexture實例以設置為材質屬性的contents

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM