Protyposis

Travelling through time & space in real-time...

CATEGORY: Multimedia

Native immersive 360° VR video playback on Android with Spectaculum

Playback of immersive 360° video on Android is usually done in a WebView with an HTML5 video player. This tutorial demonstrates how to display 360° video in a native view widget to save the overhead of a whole browser stack. This is done by using the versatile Spectaculum view widget for video rendering and the popular ExoPlayer for video decoding. Both of these libraries are open source under the Apache 2.0 license and available on GitHub and the JCenter repository.

Spectaculum – Android OpenGL ES Accelerated View for Picture and Video Content

Spectaculum is a view widget for Android to display visual content in a GLES accelerated context, providing zooming and panning functionality, parameterized shader effects, and frame grabbing. It comes with additional views that save developers a lot of time and implement all functionality for displaying bitmap images, camera preview, and videos through the Android MediaPlayer, MediaPlayer Extended, and ExoPlayer. The packaged shader effects range from simple color filters to immersive 360° VR video rendering.

The Spectaculum view can be used with all sources that can write to a surface or surface texture, which is essentially every visual content source, but I recommend using one of the many available modules if applicable. Example use-cases are photo galleries and picture viewers with zooming/panning support and optional picture effects through shaders (e.g. contrast adjustment, color correction), video players with live image adjustments through shaders and 3D/360°/immersive/VR playback, and camera previews with live effects. An extensive documentation on functionality, API, usage, and modules is available on GitHub. The library is also available from JCenter’s Maven repository, and a demo app that showcases various views and shader effects is available on the Play Store.

Spectaculum on GitHub
Spectaculum Demo
Developer: Protyposis
Price: Free

LAIS.Foto

LAIS.Foto is a voluntary project that I developed a few months ago for a friend. It is basically a self-hosted online photo sharing platform with community features, similar to Flickr. Compared to other existing platforms, it features a unique upload and download workflow with an intermediate moderation step, tailored to the principle of donating and requesting pictures.

Requirements

The story began when the client asked me for my opinion on how she could build and manage a photo sharing platform with one of these online website generators provided by webhosting companies. The idea was to create a picture sharing website called LAIS.Foto, where people could donate (upload) pictures for charity and nonprofit projects that cannot or do not want to afford paid pictures for their promotion work. Members of these projects would then request and acquire (download) pictures that they want to use.

ITEC MediaPlayer reaching v3.0, getting production-ready and a new name: MediaPlayer-Extended

Since the previous post from about a year ago, the ITEC MediaPlayer for Android has evolved to its second major version, receiving a lot of bugfixes, a rewritten playback core with huge performance improvements, and the ability to playback audio-only sources. Its new name now bumps it to version 3.0 and it is reaching a point where I feel confident that it can be used in production, and in fact, people are already starting to use it.

TVUnblock IP update script for OpenWRT

Yesterday I discovered the free TVUnblock.com service and was suprised how easy it is to use. Configuring my OpenWRT router to get access to US Netflix content only took me about 5 minutes. Being a free service, TVUnblock requires users to register their IP with them to unlock the unblocking functionality. For internet connections with dynamic IP adresses, this means that you have to regularly re-register your IP address, else you’re back to the local program, or none at all if you use it for services that aren’t available outside the US.

To automate this process, I have written a small IP update script:

Introducing Aurio and AudioAlign

AudioAlign is a tool that I started developing in 2010 for my master’s thesis (and has been actively developed since then), with the goal to create a software for the automatic synchronization of audio and video recordings. Although I never quite reached the point of a fully automatic synchronization system, it showed promising results compared to the few similar commercial applications available on the market, and continues to be a helpful tool for my research purposes. I gave up on the plan to commercialize it due to patenting problems I didn’t know how to deal with, but instead decided on open sourcing it so others could still make use of it and hopefully even help me improve it. Aurio is a library extracted from AudioAlign, providing the underlying core audio processing functionality like an audio processing engine and audio fingerprinting and time warping algorithms. Both Aurio and AudioAlign are now available as AGPL licensed open source software on GitHub.

High-Precision Audio Drift and Frequency Measurements on a Budget

Conducting high precision audio drift or audio frequency measurements doesn’t have to be expensive. In this guide, I’m showing you how to do it with an ordinary computer, an audio interface, a GPS receiver, and a little bit of tinkering.

High-Precision Audio Drift and Frequency Measurements on a Budget

Conducting high precision audio drift or audio frequency measurements doesn’t have to be expensive. In this guide, I’m showing you how to do it with an ordinary computer, an audio interface, a GPS receiver, and a little bit of tinkering.

Installing Edirol UA-5 Drivers in Windows 8 / 8.1 and Windows 10

The UA-5 is not the most recent audio interface and therefore not supported by Edirol anymore. Luckily there is a Windows 7 driver available, and since newer Windows versions should be compatible, it is as easy as installing this driver – I always think. Unfortunately, that’s not working, and editing the INF file is cumbersome and requires disabling the driver signature enforcement (which is not recommended).

The solution is actually pretty simple and I found it here: Download the Vista driver, and run setup in Vista compatibility mode. This driver does not constrain the Windows version and works on all versions through Windows 10.

Improved DASH support in ITEC MediaPlayer 1.4.0

The ITEC MediaPlayer library for Android has been updated to 1.4.0. This new version mainly improves DASH support, but also has a few bugs fixed, small changes and additions to the MediaPlayer/VideoView API, and improved error/exception reporting.

The DASH MPD parser now covers a lot more use cases, including some of the DASH-IF test vectors for which an evaluation protocol is available in the sources. Experimental playback of dynamic content (live streams) is also possible now, but MPD updates are not supported yet. An important feature that is still missing is support of single-segment streams, which is why many of the test vectors still fail. Anyway, the API of the current version should remain stable for some time while all the missing functionality can be implemented under the hood, if interest calls for it. The demo app has also been updated with the new version of the library and a few usability improvements.

The library is available on GitHub, with updated documentation and sources. Release builds can be obtained from the JCenter repository for easy usage in Android projects through Gradle and Maven. The demo app is online on the Play Store.

ITEC MediaPlayer on GitHub
MediaPlayer-Extended Demo
Developer: Protyposis
Price: Free