[libav-tools] Encode the framebuffer "RGBX_8888" of my android devices

ikslawok ikslawok at free.fr
Wed Nov 27 05:28:20 CET 2013


Hello everyone.

I'm new here, and I hope to learn a lot here.

I have searched on libav.org <https://libav.org/> , but I have not found 
an answer.

I use FFmpeg/Libav, to encode the framebuffer of my android devices.
I do this to make some tutorials for using TWRP, an Android custum recovery.

> My computer : Kubuntu 12.04 x64 | ffmpeg version 
> 0.8.9-4:0.8.9-0ubuntu0.12.04.1
>
> ffmpeg version 0.8.9-4:0.8.9-0ubuntu0.12.04.1, Copyright (c) 2000-2013 
> the Libav developers
>   built on Nov  9 2013 19:08:00 with gcc 4.6.3
> *** THIS PROGRAM IS DEPRECATED ***
> This program is only provided for compatibility and will be removed in 
> a future release. Please use avconv instead.
> ffmpeg 0.8.9-4:0.8.9-0ubuntu0.12.04.1
> libavutil    51. 22. 1 / 51. 22. 1
> libavcodec   53. 35. 0 / 53. 35. 0
> libavformat  53. 21. 1 / 53. 21. 1
> libavdevice  53.  2. 0 / 53.  2. 0
> libavfilter   2. 15. 0 /  2. 15. 0
> libswscale    2.  1. 0 /  2.  1. 0
> libpostproc  52.  0. 0 / 52.  0. 0

I asked for your help, for two things :

> - Optimize the commands I used to encode the framebuffer of Nexus 4 
> and Nexus 7
> - Find, if it exists, the command to encode the framebuffer of Nexus 5

Thank you in advance

To get the framebuffer from android devices, I do "adb pull 
/dev/graphics/fb0" (using Android SDK).

Then,

_*On Nexus 7, I do :*_

fb0_nexus_7(2012) -> https://app.box.com/s/qtug6l3lsktiaaacvtat

> ffmpeg -vframes 1 -vcodec rawvideo -f rawvideo -pix_fmt rgb565le -s 
> 800x1280 -i "fb0_nexus_7(2012)"  -f image2 -vcodec png 
> "fb0_nexus_7(2012)_grand.png"


I think the command can be optimized, in view of the result in my Konsole :

> ffmpeg version 0.8.9-4:0.8.9-0ubuntu0.12.04.1, Copyright (c) 2000-2013 
> the Libav developers
>   built on Nov  9 2013 19:08:00 with gcc 4.6.3
> *** THIS PROGRAM IS DEPRECATED ***
> This program is only provided for compatibility and will be removed in 
> a future release. Please use avconv instead.
> [rawvideo @ 0x20309e0] Estimating duration from bitrate, this may be 
> inaccurate
> Input #0, rawvideo, from 'fb0_nexus_7(2012)':
>   Duration: N/A, start: 0.000000, bitrate: N/A
>     Stream #0.0: Video: rawvideo, rgb565le, 800x1280, 25 tbr, 25 tbn, 
> 25 tbc
> Incompatible pixel format 'rgb565le' for codec 'png', auto-selecting 
> format 'rgb24'
> [buffer @ 0x2030fc0] w:800 h:1280 pixfmt:rgb565le
> [avsink @ 0x203aa20] auto-inserting filter 'auto-inserted scaler 0' 
> between the filter 'src' and the filter 'out'
> [scale @ 0x203f380] w:800 h:1280 fmt:rgb565le -> w:800 h:1280 
> fmt:rgb24 flags:0x4
> Output #0, image2, to 'fb0_nexus_7(2012)_grand.png':
>   Metadata:
>     encoder         : Lavf53.21.1
>     Stream #0.0: Video: png, rgb24, 800x1280, q=2-31, 200 kb/s, 90k 
> tbn, 25 tbc
> Stream mapping:
>   Stream #0.0 -> #0.0
> Press ctrl-c to stop encoding
> frame=    1 fps=  0 q=0.0 Lsize=      -0kB time=0.04 bitrate= -4.4kbits/s
> video:30kB audio:0kB global headers:0kB muxing overhead -100.072311%


Then I get a good picture : 
http://ikslawok.free.fr/my_nexus_fr/nexus_5/twrp/pb_ffmpeg/fb0_nexus_7%282012%29_post.png



_*On Nexus 4, I do :*_

fb0_nexus_4 -> https://app.box.com/s/z6vko37ywj9vkn8vn0ug

> ffmpeg -vframes 1 -vcodec rawvideo -f rawvideo -pix_fmt rgba -s 
> 768x1280 -i "fb0_nexus_4"  -f image2 -vcodec png "fb0_nexus_4_grand.png"

I think the command can be optimized too, in view of the result in my 
Konsole :

> ffmpeg version 0.8.9-4:0.8.9-0ubuntu0.12.04.1, Copyright (c) 2000-2013 
> the Libav developers
>   built on Nov  9 2013 19:08:00 with gcc 4.6.3
> *** THIS PROGRAM IS DEPRECATED ***
> This program is only provided for compatibility and will be removed in 
> a future release. Please use avconv instead.
> [rawvideo @ 0x188a9e0] Estimating duration from bitrate, this may be 
> inaccurate
> Input #0, rawvideo, from 'fb0_nexus_4':
>   Duration: N/A, start: 0.000000, bitrate: N/A
>     Stream #0.0: Video: rawvideo, rgba, 768x1280, 25 tbr, 25 tbn, 25 tbc
> Incompatible pixel format 'rgba' for codec 'png', auto-selecting 
> format 'rgb24'
> [buffer @ 0x188afc0] w:768 h:1280 pixfmt:rgba
> [avsink @ 0x1894a40] auto-inserting filter 'auto-inserted scaler 0' 
> between the filter 'src' and the filter 'out'
> [scale @ 0x18993c0] w:768 h:1280 fmt:rgba -> w:768 h:1280 fmt:rgb24 
> flags:0x4
> Output #0, image2, to 'b0_nexus_4_grand.png':
>   Metadata:
>     encoder         : Lavf53.21.1
>     Stream #0.0: Video: png, rgb24, 768x1280, q=2-31, 200 kb/s, 90k 
> tbn, 25 tbc
> Stream mapping:
>   Stream #0.0 -> #0.0
> Press ctrl-c to stop encoding
> frame=    1 fps=  0 q=0.0 Lsize=      -0kB time=0.04 bitrate= -4.4kbits/s
> video:30kB audio:0kB global headers:0kB muxing overhead -100.071004%


Then I get a good picture : 
http://ikslawok.free.fr/my_nexus_fr/nexus_5/twrp/pb_ffmpeg/fb0_nexus_4_grand.png

_*
*__*I tried, without success on Nexus 5 :*_

fb0_nexus_5 -> https://app.box.com/s/7p2091hg9evyacxi52s3

> ffmpeg -vframes 1 -vcodec rawvideo -f rawvideo -pix_fmt rgba -s 
> 1080x1920 -i "fb0_nexus_5"  -f image2 -vcodec png "fb0_nexus_5_grand.png"
The result in my Konsole :

> ffmpeg version 0.8.9-4:0.8.9-0ubuntu0.12.04.1, Copyright (c) 2000-2013 
> the Libav developers
>   built on Nov  9 2013 19:08:00 with gcc 4.6.3
> *** THIS PROGRAM IS DEPRECATED ***
> This program is only provided for compatibility and will be removed in 
> a future release. Please use avconv instead.
> [rawvideo @ 0x20199e0] Estimating duration from bitrate, this may be 
> inaccurate
> Input #0, rawvideo, from 'fb0_nexus_5':
>   Duration: N/A, start: 0.000000, bitrate: N/A
>     Stream #0.0: Video: rawvideo, rgba, 1080x1920, 25 tbr, 25 tbn, 25 tbc
> Incompatible pixel format 'rgba' for codec 'png', auto-selecting 
> format 'rgb24'
> [buffer @ 0x2019fc0] w:1080 h:1920 pixfmt:rgba
> [avsink @ 0x2023a40] auto-inserting filter 'auto-inserted scaler 0' 
> between the filter 'src' and the filter 'out'
> [scale @ 0x20283c0] w:1080 h:1920 fmt:rgba -> w:1080 h:1920 fmt:rgb24 
> flags:0x4
> Output #0, image2, to 'fb0_nexus_5_grand.png':
>   Metadata:
>     encoder         : Lavf53.21.1
>     Stream #0.0: Video: png, rgb24, 1080x1920, q=2-31, 200 kb/s, 90k 
> tbn, 25 tbc
> Stream mapping:
>   Stream #0.0 -> #0.0
> Press ctrl-c to stop encoding
> frame=    1 fps=  0 q=0.0 Lsize=      -0kB time=0.04 bitrate= -4.4kbits/s
> video:50kB audio:0kB global headers:0kB muxing overhead -100.042899%


Then I get this "picture" : 
http://ikslawok.free.fr/my_nexus_fr/nexus_5/twrp/pb_ffmpeg/fb0_nexus_5_grand.png

I only know that Nexus 5 use pixel format "RGBX_8888", and resolution is 
1080x1920

> Starting the UI...Pixel format: 1080x1920 @ 32bpp
> Pixel format: RGBX_8888
> framebuffer: fd 4 (1080 x 1920)


I hope I have provided all the information, and respect the mailing 
lists rules, to get some help.

Thank you for your help.

Have a good day.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.libav.org/pipermail/libav-tools/attachments/20131127/360d21fb/attachment.html>


More information about the libav-tools mailing list