![](/img/trans.png)
[英]programatically read frame buffer /dev/graphics/fb0 in android
[英]How to capture the screen using /dev/graphics/fb0 (Android)
如何使用/dev/graphics/fb0
捕獲Android設備屏幕內容以及如何使用從幀緩沖區收集的數據使其成為圖像文件。 我知道這需要設備根植,我對此感到滿意。
提前致謝,
這應該工作:
adb pull /dev/graphics/fb0 fb0
ffmpeg -vframes 1 -vcodec rawvideo -f rawvideo -pix_fmt rgb32 -s 320x480 -i fb0 -f image2 -vcodec png image.png
如果您擁有root權限。
將數據從fb0復制到另一個文件,例如
cat fb0 > tmp
此時,您仍然無法打開新文件。 因為該文件的數據結構不能滿足任何圖像文件格式。 所以你需要的是解碼它。 在該文件中,每兩個字節描述一個像素。 較高的5個比特代表紅色,較低的5個比特代表藍色,其余的中間6個比特代表綠色。 您可以使用上面的信息來構建BMP和任何其他可見文件。
Nebkat的解決方案有時會起作用,但是,在使用Dollop測試工具時,我了解到沒有通用的方法直接從fb0制作圖像。 摩托羅拉Droid 2使用RGB 32.華為Ascend使用RGB 565.三星Captivate既不使用也不會將整個屏幕放在緩沖區中。
你可能要替換-pix_fmt rgb32
與-pix_fmt rgb565le
16位器件。
如果您不確定設備幀緩沖區的格式,可以按如下方式迭代ffmpeg支持的格式:
for fmt in $(ffmpeg -pix_fmts|cut -d " " -f 2); do ffmpeg -vcodec rawvideo -f rawvideo -pix_fmt $fmt -s 320x480 -i fb0 -f image2 -vcodec png /tmp/image-$fmt.png; done
結果縮略圖也有點藝術性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.