ITEC MediaPlayer Library for Android released
The ITEC MediaPlayer library is a lightweight VideoView/MediaPlayer replacement for Android’s default components, enhancing it with exact frame seek, playback speed adjustment, GLES shader effects, picture zoom/pan by gestures, and DASH support. The source code and a more detailed description is now available on GitHub, its accompanying demo showcase app on the Google Play Store.
The library was originally developed as a simple replacement for Android’s VideoView, with the single goal of providing a seek method that is exact to the frame, independent of the video encoding. The VideoView of the Android API is only capable to seek to the nearest sync- or I-frame, as are many other players and libraries, which is not satisfactory in special applications. Due to certain shortcomings in the Android API, which made this feature addition much more complex than it needed to be, and out of curiosity, this library grew to be an independent alternative to the Android components. That is, if you don’t need audio playback, because it just supports video playback for the moment (Update 25.9.: audio support has been added). The library is free of any legacy stuff, lightweight, and built upon Android’s lower level MediaExtractor and MediaCodec APIs, supporting all of Android’s natively supported protocols and formats. It additionally adds support for fragmented MP4 containers and DASH streaming, along with an OpenGL-custom-rendered extension of the VideoView, enabling nice realtime shader effects.
Just a week after I started developing this library in June, Google published its own ExoPlayer library, which I just found out a few days ago. It is used in the official YouTube app, also builds upon the low-level APIs, supports DASH playback, and also seems to support frame exact seeking. So there’s actually no reason to ever use my library, except if you hate Google (which calls your Android device into question), want neat shader effects, or need to zoom into your videos. I already have a working proof of concept for integrating the GLES functionality of the ITEC MediaPlayer library into ExoPlayer, which I will also publish eventually.