2011-01-11 61 views

回答

9

這應該工作:

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 
+0

它保存在哪裏? – XXX 2012-02-03 20:45:54

+1

工作對我很好,不需要添加-vframes 1 – 2014-02-25 05:13:14

+0

我得到這個作爲錯誤:[image2 @ 0x2405c40]無法從模式'image.png'獲取幀文件名編號2(或者設置updatefirst或使用像%03d在文件名模式中) av_interleaved_write_frame():無效的參數 – Santhanam 2015-04-21 13:39:04

3

如果你有root權限。

  1. 將數據從fb0複製到另一個文件,例如,

    cat fb0 > tmp 
    
  2. 在這一點上,你仍然不能打開新文件。 ,因爲該文件的數據結構不能滿足任何圖像文件格式。 所以你需要解碼它。在該文件中,每兩個字節描述一個像素。 較高的5個叮咬代表紅色,下部的5bites代表藍色,其餘的中間6個叮咬爲綠色。你可以使用上面的信息來建立一個BMP和任何其他可見的文件。

4

Nebkat的解決方案工作的時候,但是,在對大團測試工具的工作,我瞭解到,有直接從FB0使圖像沒有普遍的方式。摩托羅拉Droid 2使用RGB 32.華爲Ascend使用RGB 565.三星Captivate既不使用也不會將整個屏幕放入緩衝區。

1

對於16位器件,您可能想用-pix_fmt rgb565le替換-pix_fmt rgb32

1

如果你不能確定你的設備的幀緩衝器可以遍歷的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 

結果的縮略圖也是一種藝術。