Android Grabber App

  • I dont think the chrome addon will work. At least other addons didnt work on chromium since the NPAPI interface is removed. I think i tested Vysor too.


    When i get home from work later this week i'll try capturing the screen trough ADB with the internal screengrabber as sugested earlier in this thread. With this no addon is needed and i think we can set the resolution and framerate via the command line. This will require the shield to be connected to the rpi with usb.

  • The huge problem is that Kodi has (often) no access to hardware accelerated videos (Android). Maybe due to hardware restrictions. At least it is nothing we could change as the kodi internal interface is "black".


    Wherever you look, you are surrounded by content protection mechanics.


    Hello,


    Are you sure that it does not support acceleration hardware ?!


    Have you tested this parameter:


    <advancedsettings>
    [...]
    <video>
    <usedroidprojectioncapture>true</usedroidprojectioncapture>
    </video>
    [...]
    </advancedsettings>


    https://github.com/koying/SPMC/wiki/How-do-I-get-Hue,-boblight,-hyperion...-to-work-with-Mediacodec-Surface?

  • So here are some testing results:


    On my Laptop with Ubuntu 16.04 i compiled minicap as described here:
    https://github.com/openstf/minicap


    I need to set the resoulution by hand as autodetection didn't worked on my One M8 (change the arg line in run.sh)


    Now i'm able to get the binary output of the screen on terminal via
    nc localhost 1313 in the following format: (taken from Minicap Readme)


    It is assumed that you now have an open connection to the minicap socket. If not, follow the instructions above.


    The minicap protocol is a simple push-based binary protocol. When you first connect to the socket, you get a global header followed by the first frame. The global header will not appear again. More frames keep getting sent until you stop minicap.


    Global header binary format
    Appears once.


    Bytes Length Type Explanation
    0 1 unsigned char Version (currently 1)
    1 1 unsigned char Size of the header (from byte 0)
    2-5 4 uint32 (low endian) Pid of the process
    6-9 4 uint32 (low endian) Real display width in pixels
    10-13 4 uint32 (low endian) Real display height in pixels
    14-17 4 uint32 (low endian) Virtual display width in pixels
    18-21 4 uint32 (low endian) Virtual display height in pixels
    22 1 unsigned char Display orientation
    23 1 unsigned char Quirk bitflags (see below)
    Quirk bitflags
    Currently, the following quirks may be reported:


    Value Name Explanation
    1 QUIRK_DUMB Frames will get sent even if there are no changes from the previous frame. Informative, doesn't require any actions on your part. You can limit the capture rate by reading frame data slower in your own code if you wish.
    2 QUIRK_ALWAYS_UPRIGHT The frame will always be in upright orientation regardless of the device orientation. This needs to be taken into account when rendering the image.
    4 QUIRK_TEAR Frame tear might be visible. Informative, no action required. Neither of our current two methods exhibit this behavior.
    Frame binary format
    Appears a potentially unlimited number of times.


    Bytes Length Type Explanation
    0-3 4 uint32 (low endian) Frame size in bytes (=n)
    4-(n+4) n unsigned char[] Frame in JPG format




    Seems very fast and also works on Amazon video app and every app i tried


    So i think what we need is:


    A hyperion module which utilizes minicap for getting the Screen Data from an Android device an send the output to hyperion, as minicap is already Android 7.1 compatible this should give us a good way of capturing the screen on many devices.


    The great is that it works without root an that frames are only send if there are changes, no changes no new frames


    AFAIK this would be the only possible method for getting screen data from Android devices since local installed apps won't have access to the screen data (except you're rooted)


    Now the bad, i'm no developer so i'm unable to do by myself, but i'm allways willing to help, test or debug




    So, why minicap?
    The Android own screencap function for adb is way too slow, we would only get 1 frame every few seconds, not enough for hyperion. And why not use an existing method if available?


    My Shield pro arrives tomorrow and then i check if it also works

  • Are you using Android 5.0 or higher?
    If so it uses MediaProjection https://developer.android.com/…tion/MediaProjection.html
    Sounds promissing, we don't need more than 10 fps anyway.


    @BioHaZard1
    I think you could give it a go.
    The only issue is see here is the api lvl. As you can't request permissions during runtime until 6.0 not sure how it would be with a Android 4.x app to get access or even the api for something which is available with android 5.0.


    Maybe it's much better to push this in a capture app. As i read the adb access from an app is limited, but no source to what. A version for Android 5.0 with MediaProjection and (if working) one with adb for 4.4 and lower..

  • Netflix works also, i will post a video i took of the capture so you can see the speed (i did with stf which is also based on minicap)


    Netflix:
    [MEDIA=streamable]jxf29[/MEDIA]


    Amazon:
    [MEDIA=streamable]bzwz7[/MEDIA]


    Don't know about 4k but i think 1080p is better than nothing and would fit for most people

  • it should, the shield for example also has adb on board. In theory it should also work via wireless adb.


    @TPmodding
    You can try going in settings, find the build number and click several times on it. After that you should have a new entry called developer options, there you can enable debugging.

  • For anyone who want's to check if at least adb (android debugging bridge) is working with your target device, here is what you need to do:


    1: You need an android based device
    2: Install the adb drivers and tools
    ,either via https://developer.android.com/studio/index.html or manual (look on xda-developers.com)
    3: enable USB debugging on the device.
    Go to settings, info, software identity, more
    tap the build-number several times fast (8-10 times) go back to settings and click on developer options, tick on USB debugging.


    Connect the device to your pc.


    Open a terminal and type adb shell
    And you should land on shell on the device


    For trying over LAN/WiFi also do:
    adb tcpip 5.5.5.5
    adb connect ip-of-device:5.5.5.5


    If this works please report back with
    -device name
    -software version
    -rooted?

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!