![](/img/trans.png)
[英]What is the fastest and most efficient way on iOS to downscale a HD video to SD?
[英]What is the most efficient way to render a streamed video in SceneKit iOS?
我正在開發一個顯示流式視頻的 SceneKit 應用程序。 在其中我創建了一個平面,將 UIImage 附加到它,然后保存 CALayer。 后來我得到一個壓縮視頻stream,我把它解壓成一個CGImage。 然后我用新的 CGImage 更新 CALayer 的內容。 這一切都有效,但是幀速率非常慢,而且似乎不是流式傳輸或解壓縮問題。
我的問題是:有沒有更快、更有效的方法來做到這一點? 我已經對 SCNPlane 進行了旋轉和偏移轉換。 但是,這些應該只是矩陣更新,不應更改渲染時間,因為您必須通過相同的矩陣 go 以在其原始坐標中渲染 SCNPlane。
轉換為UIImage
或CGImageRef
是一項昂貴的操作。 它以非最佳格式創建圖像的 CPU 表示,然后需要再次轉換為 GPU 表示 ( MTLTexture
)。 SceneKit 支持將AVPlayer
實例作為材質屬性的contents
。 它應該是最簡單和最有效的方法,將一個視頻放到一個平面上。
更新:如果您的應用程序管道是圍繞CVImageBufferRef
(又名CVPixelBufferRef
)構建的,那么CVMetalTextureCache
和CVMetalTextureCacheCreateTextureFromImage
是您應該利用的 API 來有效地生成MTLTexture
實例以設置為材質屬性的contents
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.