Thursday, October 12, 2017

files - What media formats are supported in Android?


I am new to Android, and I'm learning. For example, most of my old music files were FLV and SWF files, which my phone and tablet won't play, and I can't seem to get extensions for Chrome to play them.


The file manager on my tablet seems to play MP4 files just fine, although I can't make a playlist like I could in VLC. I tried VLC for Android, and it doesn’t work for anything.


I haven't tried my WEBM files yet. I am just wondering, what are supported in Android 4+?



Answer



As Matthew Read noted, the list of supported media formats is device specific. More or less, it's actually specific to the default video player app your device has.


I'm not aware of an app that can show a list of MIME types supported by an installed app, so here you go with the command-line way. Make sure you've setup in PC, USB debugging enabled in the device, and the device is connected to PC.


Note: I needed root access to access "dumpsys" on Android 4.2.1 but Kitkat and Lollipop allows access to it without root access.





  1. You would have to first determine which app (pre-installed) in your system is responsible for playing videos.


    In my device running Android 4.2.1, Gallery app does that job (don't be surprised, it even manages the Camera as an standalone app, not to mention the Gallery itself). Its package name is com.android.gallery3d.


    There are numerous ways to find the package name of an app. You can use apps like App Browser or Elixir 2 or OS Monitor or ES File Explorer and whatnot. Also, see View app's full package name?


    You can use command-line too. Launch the app whose package name you want to determine and let it remain in foreground. On PC, enter the command:


    adb shell dumpsys window | grep mCurrentFocus

    You would see something like:


    mCurrentFocus=Window{41d5fd10 u0 com.japanesecrackers.appbrowser/com.japanesecrackers.appbrowser.activities.AppDetailsActivity}


    com.japanesecrackers.appbrowser is the package name here. The part of string after / is the activity in foreground.


    Note that if you can't find the OEM's video player app under Settings → Apps → All apps, then most likely, the video player is just an activity of an app. In that case, simply play a video file and then run the aforesaid command.




  2. Now that we have the package name , enter the command:


    adb shell dumpsys package  | sed -n '/Full MIME Types:/,/Base MIME Types:/p' | grep -o "video/[a-zA-Z0-9].*" | awk -F 'video/' '{print $2}' | tr -d ':'

    It gave me the output:




    avi
    3gpp2
    mpeg4
    3gpp
    3gp
    webm
    mp4

    Now that was a too localized command and most likely, it would give you nothing for your particular app. The key command is adb shell dumpsys package . It holds all the information you need to sort. The MIME types are listed between the lines with string Full MIME Types: and Base MIME Types: respectively.


    I don't have to tell you anything anymore. You would be able to identify the media formats rather easily now.





  3. Alternatively,




    1. Grab the APK of the app,




    2. Extract AndroidManifest.xml from the APK. An APK is simply an archive file so extraction is easy.





    3. Open the XMl (binary) file on Android using Axel or on PC using AXMLPrinter (requires Java Runtime Environment).




    App Browser can show the Manifest of an app without requiring the XML separately.


    You have to look for the lines containing the string android:mimeType=. For example, for MX Player the relevant strings I saw were,



    android:mimeType="video/*"
    android:mimeType="*/rmvb"
    android:mimeType="*/avi"

    android:mimeType="*/mkv"
    android:mimeType="application/sdp"
    android:mimeType="application/mp4"
    android:mimeType="application/mpeg*"
    android:mimeType="application/ogg"
    android:mimeType="application/x-ogg"
    android:mimeType="application/vnd.rn-realmedia*"
    android:mimeType="application/3gpp*"
    android:mimeType="application/vnd.3gp*"
    android:mimeType="application/vnd.dvd*"

    android:mimeType="application/vnd.dolby*"
    android:mimeType="application/x-mpegURL"
    android:mimeType="application/vnd.apple.mpegurl"
    android:mimeType="application/x-quicktimeplayer"
    android:mimeType="application/x-shockwave-flash"
    android:mimeType="video/*"
    android:mimeType="*/rmvb"
    android:mimeType="*/avi"
    android:mimeType="*/mkv"
    android:mimeType="application/sdp"

    android:mimeType="application/mp4"
    android:mimeType="application/mpeg*"
    android:mimeType="application/ogg"
    android:mimeType="application/vnd.rn-realmedia*"
    android:mimeType="application/3gpp*"
    android:mimeType="application/vnd.3gp*"
    android:mimeType="application/vnd.dvd*"
    android:mimeType="application/vnd.dolby*"
    android:mimeType="application/x-mpegURL"
    android:mimeType="application/vnd.apple.mpegurl"

    android:mimeType="application/x-quicktimeplayer"
    android:mimeType="application/x-shockwave-flash"
    android:mimeType="audio/*"
    android:mimeType="application/flac"
    android:mimeType="application/x-flac"
    android:mimeType="application/ape"
    android:mimeType="application/x-ape"





Google Chrome and Firefox can play the WEBM and MP4. For FLV and SWF, your best bet is to find a third-party app. And, you need to dive into Play Store and on web. There are numerous apps which can play variety of media formats or allows you to create playlists or provides better file management options.


Have fun!


No comments:

Post a Comment

samsung galaxy s 2 - Cannot restore Kies backup after firmware upgrade

I backed up my Samsung Galaxy S2 on Kies before updating to Ice Cream Sandwich. After the upgrade I tried to restore, but the restore fails ...