Media Streaming Libraries for Android


Intoduction

Android has a standard API for a certain set of streaming protocols, e.g. RTSP and HLS. However built-in streaming protocols usually provide limited functionality and are not usable in many corner cases. Besides, it means that all those who use these protocols will have very close set of functions in their software products, so if you wish to make your product any different from the other video streaming Android apps, you need to consider and use something else.

VASTreaming not only offers the streaming protocols not present in the standard Android API, such as RTMP, but also provides extended and flexible implementation of already existing protocols, such as HLS and TS.

RTMP

RTMP is an old protocol, owned by Adobe and tightly bound to Flash technology from the very beginning of its existence. Even though Flash has been deprecated after dominating over the content rich web for many years, RTMP is still alive. It is due to the fact that RTMP supports so-called publishing when a live media stream is pushed by a client to a server for further distribution. Many modern protocols lack this publishing feature.

Starting from the Flash days, existing server infrastructure still uses RTMP and will be using it for a long time. YouTube, Facebook, Twitch - you name it, all of them use RTMP ingestion for live streams. If a future app is expected to provide their user with a feature of publishing video streams in social networks, it should use RTMP. Therefore, investing into a RTMP library is not a waste of money but quite the opposite. In fact, it guarantees the compatibility with most popular content distribution networks.

VASTreaming RTMP library for Android provides the ability to publish a live stream to RTMP server, pull and watch a stream from RTMP server as well as run a tiny RTMP server with the ability to ingest published streams and re-distribute streams to connected clients. See RTMP library page for more details about the protocol itself as well as our implementation details and specifics.

HLS and TS

HLS was developed by Apple and earned its widespread popularity due to a relative simplicity and most of all because of the usage of the HTTP as a transport protocol. This simple decision allowed streaming reception in every location where the web is available. However, HLS has its own limitations and the biggest drawback is the protocol’s one-way direction: there is no method specified to publish a stream to HLS server. Despite of that for now HLS is among the most used streaming protocols and supported natively on many platforms.

Transport stream (TS) is not a streaming protocol but a media format most suitable for streaming or media transmission systems. HLS as well as other protocols, most notably MPEG-DASH utilizes TS for media data segments. In addition to that TS itself can be used for direct streaming via multicast or even via pushing it by HTTP server (so-called TS over HTTP).

The wide popularity of HLS and TS guarantees wide compatibility for new software products using them.

VASTreaming HLS and TS library for Android provides the ability to pull and watch the stream from a server. In addition, VASTreaming TS library for Android allows to decode transport stream received by any other means, for example as a file or RTP payload. See HLS library page for more details about the protocol itself as well as our implementation details and specifics.

Capture and Encoding

VASTreaming streaming library for Android, in addition to streaming itself, provides built-in functionality to capture and encode media from camera, microphone, device screen, or any other media. Moreover, it is possible to mix the following video sources together in real-time:

Multiples approaches are available for fast image processing, for example render scripts and OpenGL. The fastest or most suitable method can be chosen based on the customer preference or platform specifics.

Implementation

VASTreaming streaming library for Android is available in pure Java for maximum compatibility and easiest integration into existing Android Studio projects. Some parts are also available in C++ to be built with NDK. C++ parts are optional and can be utilized either to achieve highest performance or to save precious CPU time on low performance devices.

For customer needs, any custom streaming features could be easily implemented with this library, including the protocol extensions and porting of the code to C++.

Don't hesitate to contact us to request a demo applications and a demo projects.

contact us

info@vastreaming.net