簡體   English   中英

如何從ImageReader android獲取InputStream

[英]How to get InputStream from ImageReader android

我正在看這個課: https : //developer.android.com/reference/android/media/ImageReader.html

我想要的是從ImageReader類獲取InputStream並獲取正在渲染到當前表面的圖像數據。 當前Surface表示當前顯示的android屏幕。 我看了AOSP代碼中的一個示例,但很難理解。 如果有人為我提供ImageReader類的一個很好的例子,那將真的很有幫助。

聽起來您正在嘗試使用ImageReader從任意Surface提取數據。 那樣行不通。

ImageReader是緩沖區隊列“ CPU使用者”,這是一種奇特的說法,當您將數據發送到Surface ,在CPU上運行的代碼可以直接檢查數據。 並非所有表面都可以這種方式處理-創建表面時會設置使用標志-因此您需要使用ImageReader#getSurface()創建Surface ,然后將其傳遞給想要將數據發送到Surface

如文檔所述,“幾個Android媒體API類都將Surface對象作為要渲染到的目標,包括MediaPlayer,MediaCodec和RenderScript分配。”

ImageReader的主要客戶是相機,在您鏈接到的CTS測試中證明了這一點。 它實際上不適用於MediaCodec解碼器,因為輸出格式與攝像機不同(其中一些是專有的)。

虛擬顯示測試更接近於您想要的測試,因為您可以將虛擬顯示的輸出定向到Surface 對於具有普通特權的應用程序,您只能在此處發送自己應用程序的輸出。 Android 4.4的“ screenrecord”命令執行類似的操作。

(如果要記錄在SurfaceView上繪制的內容,並使用OpenGL進行渲染,則此處此處演示一些替代方法。)

暫無
暫無

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

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