如何使用/dev/graphics/fb0
捕獲Android設備屏幕內容以及如何使用從幀緩衝區收集的數據將其製作爲圖像文件。我知道這需要設備紮根,我對此表示滿意。如何使用/ dev/graphics/fb0捕獲屏幕(Android)
由於提前,
如何使用/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個叮咬代表紅色,下部的5bites代表藍色,其餘的中間6個叮咬爲綠色。你可以使用上面的信息來建立一個BMP和任何其他可見的文件。
Nebkat的解決方案工作的時候,但是,在對大團測試工具的工作,我瞭解到,有直接從FB0使圖像沒有普遍的方式。摩托羅拉Droid 2使用RGB 32.華爲Ascend使用RGB 565.三星Captivate既不使用也不會將整個屏幕放入緩衝區。
對於16位器件,您可能想用-pix_fmt rgb565le
替換-pix_fmt rgb32
。
如果你不能確定你的設備的幀緩衝器可以遍歷的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
結果的縮略圖也是一種藝術。
它保存在哪裏? – XXX 2012-02-03 20:45:54
工作對我很好,不需要添加-vframes 1 – 2014-02-25 05:13:14
我得到這個作爲錯誤:[image2 @ 0x2405c40]無法從模式'image.png'獲取幀文件名編號2(或者設置updatefirst或使用像%03d在文件名模式中) av_interleaved_write_frame():無效的參數 – Santhanam 2015-04-21 13:39:04