我想使用MediaCodec API解碼視頻樣本。我正在使用surfaceView來顯示渲染的樣本。如果我按主頁按鈕,應用程序進入暫停狀態和表面被破壞。當我回來恢復狀態時,新的surfaceView參考正在創建,但解碼器無法在surfaceView上抽取樣本。所以屏幕顯示爲黑色。 視頻配置: videoDecoder.configure(format,surface,null,0); 那麼我怎麼能重新配置videoDecoder在上面的聲明。它類似於以下問題 How to keep decoding alive during screen orientation?視頻解碼器使用MediaCodec配置
0
A
回答
1
MediaCodec
API目前不提供替代輸出Surface
的方法(API 19)。
正如在你提到的另一個問題中,我認爲解決這個問題的方法是解碼爲與視圖層次無關的Surface
(因此,當Activity
被摧毀)。
如果您將MediaCodec
的輸出指向SurfaceTexture
,則可以將該紋理渲染到SurfaceView
上。這將需要一些GLES代碼。你可以在Grafika sources找到必要的片段,但目前還沒有完全實現你想要的東西(例如PlayMovieActivity
將視頻解碼爲SurfaceTexture
,但該ST是TextureView
的一部分,將被拆除)。
額外的渲染步驟將增加GPU負載,並且不適用於受DRM保護的視頻。對於大多數設備和應用程序,這並不重要。請參閱bigflake examples。
更新:我已將此添加到Grafika,有一個轉折。請參閱「雙重解碼」示例。輸出轉到與TextureView
關聯的SurfaceTexture
。如果屏幕旋轉(或當前通過按下電源按鈕消隱),解碼將繼續。如果您使用「後退」或「主頁」按鈕離開活動,解碼將停止。它的工作原理是保留SurfaceTexture
,將其附加到新的TextureView
。
相關問題
- 1. 使用MediaCodec和MediaExtractor來解碼和編碼視頻
- 2. 使用Android上的MediaCodec編碼視頻
- 3. QuickTime視頻編解碼器配置
- 4. Mediacodec在線編碼視頻
- 5. 使用MediaCodec壓縮視頻
- 6. 使用NDK MediaCodec獲取已解碼視頻的作物邊界
- 7. 是否可以使用Android MediaCodec解碼vide:avc1視頻?
- 8. DJI「視頻流解碼示例」:MediaCodec配置爲空表面問題
- 9. 同步從Mediacodec解碼音頻和視頻數據
- 10. 使用MediaCodec和MTK編解碼器編碼時選擇H264配置文件
- 11. 如何使用MediaCodec修剪視頻
- 12. 如何使用mediaCodec創建視頻?
- 13. 使用libVLC作爲視頻解碼器
- 14. Android MediaCodec releaseOutputBuffer在解碼H264視頻時拋出MediaCodec.CodecException
- 15. 使用MediaCodec錄製720p視頻,但編碼視頻的fps太低
- 16. 低cpu html5視頻編碼器配置
- 17. 使用Microsoft DTV-DVD視頻解碼器播放H264視頻
- 18. MediaCodec亞秒視頻長度
- 19. 如何減少MediaCodec視頻
- 20. 使用MediaCodec API在Android中編碼視頻時設置AVC/H.264配置文件
- 21. 動態配置mediaCodec
- 22. 在Android上使用MediaCodec API解碼AAC
- 23. MediaCodec硬件解碼器在不同的服務器配置下要慢很多?
- 24. 用於Silverlight視頻會議的視頻/音頻編解碼器
- 25. 如何使用MediaCodec和MediaMuxer錄製視頻和音頻
- 26. 使用MediaCodec和MediaExtractor播放視頻和音頻
- 27. Mediacodec再次解碼視頻和編碼得到一個損壞的文件
- 28. 如何在MediaCodec解碼器配置SurfaceTexture輸出時獲取幀時間戳?
- 29. 通過追加多MediaCodec視頻 - 關於多MediaExtractors和解碼器只是一個編碼器
- 30. 視頻編解碼器開始代碼
嗨fadden謝謝你的迴應。你可以給一些示例代碼。 – saa
我不會在接下來的幾周更新bigflake/grafika。順便說一句,如果您使用MediaExtractor(而不是流式傳輸H.264)從文件中提取視頻,那麼您應該能夠在重新啓動活動後重新創建提取器/解碼器,並且只需要找到停止的位置即可。時間偏移可以從演示時間戳中確定。 – fadden
謝謝fadden。我會根據你的建議更改我的代碼。 – saa