我需要記錄一個只包含一個單幀的視頻:用戶指定的圖像(可以是任意長度,但只有相同的靜態圖像)。所以,我想我可以使用新的MediaRecorder.VideoSource.SURFACE,並畫到記錄器正在使用的Surface。我正確初始化了記錄器,我甚至可以調用MediaRecorder.getSurface()而不會出現異常(這顯然非常棘手)。需要繪製到MediaRecorder使用的表面
我的問題有點尷尬:我不知道如何處理返回的表面。我需要以某種方式繪製它,但是我可以找到的所有示例都涉及繪製到SurfaceView。這個表面是否與MediaRecorder.setPreviewDisplay()使用的表面相同?我如何繪製一些東西?
我剛剛嘗試過:錄製開始後,我調用了lockCavas(),在畫布上畫了一條線,然後調用了unlockAndPostCanvas()。但是,當我停止錄製時,出現RuntimeException,根據文檔意味着沒有收到有效數據用於錄製。我沒有遇到像發佈的鏈接那樣的錯誤顏色偏移問題。有任何想法嗎? –
色彩通道逆轉是一種可能的結果;徹底的失敗是另一回事。聽起來你需要去GLES路線。 (可以使用軟件渲染來創建離屏位圖,使用'glTexImage2D()'將紋理作爲紋理上傳,然後渲染該紋理...因此不需要將所有渲染轉換爲GLES命令。 )如果您從Grafika中的代碼開始,只用'glClear()'和剪刀矩形在屏幕上繪製彩色矩形,則應該可以測試出來,而不用將腳趾浸入GLES中。 – fadden