新聞中心
手機(jī)平臺(tái)性能是個(gè)關(guān)鍵問(wèn)題。

專注于為中小企業(yè)提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)黔西免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
壓縮視頻分成3個(gè)步驟:
讀取顯卡數(shù)據(jù), 使用編碼器壓縮,保存文件。
使用libav 壓縮的時(shí)候,軟件編碼器效率不夠,在itouch5上面只能做到5-6 fps。
因此使用ios平臺(tái)自帶的AVFoundtion庫(kù)來(lái)做,硬件加速編碼,具體做法參考
http://stackoverflow.com/questions/9661259/record-the-drawing-as-a-m4v-video-file-opengl/9672890#9672890
使用corevideo 庫(kù)提供的函數(shù), 在itouch5上能做到12-13fps。
接下來(lái)的瓶頸主要在從顯卡中讀取數(shù)據(jù)上面 即glReadPixel
ios 提供一種texturecache 可以將cpu存儲(chǔ)器和顯卡存儲(chǔ) map到一起,但是就不能像操作cpu存儲(chǔ)一樣方便的改動(dòng)這塊區(qū)域的數(shù)據(jù)了, 具體硬件機(jī)制不是很了解, 但是這樣可以大大降低 消耗的時(shí)間,只做獲取數(shù)據(jù) 壓縮視頻任務(wù)的話 可以達(dá)到60fps的效率。 具體參考
http://stackoverflow.com/questions/9550297/faster-alternative-to-glreadpixels-in-iphone-opengl-es-2-0
這兩個(gè)回答是一個(gè)人,這位仁兄的項(xiàng)目:
https://github.com/BradLarson/GPUImage
主要參考其中的 MovieWrite 類。
因此要在cocos2dx上面擴(kuò)展游戲視頻錄制的功能,則需要改動(dòng)
CCDirector 添加錄制游戲狀態(tài),將當(dāng)前游戲場(chǎng)景繪制到texture 中
接著將這個(gè)texture內(nèi)容繪制到屏幕上用于顯示
接著將這個(gè)texutre繪制到 視頻cache 的framebuffer中 用于生成視頻。
這塊的代碼可以參考CCRenderTexture 部分的代碼。
網(wǎng)頁(yè)名稱:iOS快速將顯卡中數(shù)據(jù)讀出壓縮成視頻-cocos2dx擴(kuò)展
轉(zhuǎn)載來(lái)于:http://www.dlmjj.cn/article/cdddjec.html


咨詢
建站咨詢
