Fluendo SDK is a simple to use, media player API which allow to develop cross platform multimedia playback applications. It provides an abstraction layer leveraging GStreamer's power to target multiple platforms with the same source code while taking away the complexity of the GStreamer API.
Given that GStreamer aims to be as generic as possible, specific usage such as media playback tends to require quite a lot of code when other dedicated APIs are more straightforward. That's the main reason why we created Fluendo SDK.
As depicted in the following scheme, our SDK can also include a set of components based on the Fluendo Codec Pack. This complementary components are focused on specific multimedia tasks.
Along with the Fluendo SDK we also provide vendor specific software components that relies on the underneath hardware platform. This vendor specific components are mainly related to DRM and hardware acceleration units.
Fluendo SDK stack
This component includes the File and Network Streaming (non-adaptive) playback support. It is responsible for opening main market container formats, decoding the audio and video formats, performing the basic processing (audio volume, video scale, rotate, color transforms, effects), and finally rendering the audio/video file.
This component leverages the Playback Component and includes the main Adaptive Streaming plugins based on GStreamer: MPEG-DASH, Apple's HLS and Microsoft Smooth Streaming.
This component leverages the Playback Component and adds DVD playback features: menu navigation, subtitles, multiple audio and video tracks, and chapters.
The adaptive streaming demuxers included on the Adaptive Streaming Component already support interfaces to work with the main market DRM techonlogies such as PlayReady, Widevine and Marlin. The actual DRM support requires the above mentioned interface and the DRM implementation (license and libraries) which must provided by the vendor.
Fluendo SDK allows to work with platform manufacturer specific multimedia API or a specific hardware component that requires custom GStreamer plugin.
The Fluendo SDK is written in C and runs on the CPU, so it does not need anything special to run on any hardware, besides compiling for the appropriate processor. However, there are a few places where special hardware can be used if available: Hardware-accelerated video decoding, video rendering and SPDIF support are some examples.
The Fluendo SDK uses the GStreamer framework internally, so it has support for a vast number of file formats and codecs, plus the ones from the Fluendo Codec Pack. It does not matter if the media comes from the internet or from a local file, all major file formats (containers) and codecs are supported, plus a lot of less-used formats too.
Our SDK makes it easy to add GStreamer powered media playback on applications for all supported Operating Systems (Windows, Linux, OSX, Android and iOS) and CPU architectures x86, x86_64, ARM.
Play, Pause, Seek, Fast Forward, Slow Motion, Reverse Playback, Frame Stepping. Stream selection for audio, video and subtitles Playback of multiple simultaneous streams
The Fluendo SDK only requests the necessary information from the application and takes care of everything else. An event mechanism allows the application to be informed of the actions it chooses.
The Fluendo SDK takes care of the complete pipeline, from media retrieval (download, streaming, file reading) to rendering, including all intermediate steps like demuxing, decoding, colorspace conversions, etc… guaranteeing a optimal processing.
Fluendo SDK provides an API to create player objects known as FluPlayer using flu_player_new(). Each player is given an URI to play through flu_player_uri_open() or a hardware device through flu_player_device_open() and will use some internal engines (depending on the URI) to create/destroy/manage decoding branches for media streams known as FluStream.
The player instances communicate with the application using an event mechanism. The application can listen for events using flu_player_event_listener_add() providing different callback and user data for each event type (see FluPlayerEvent).
The application gets notified about player state, errors, stream activation, list of available streams, etc... All notifications happen synchronously.
Fluendo SDK also provides convenience functions to handle playback-oriented tasks for multipe platforms such as:
Configuring energy saving behavior such as display sleep timeout.
Modifying DVD region code for DVD playback when there's a region code mismatch.
Detecting and listing available DVD devices ready for playback.
And many more!
void flu_initialize (void);
Initializes the library.
This function must be called before any other function of the library (except flu_check_license, if desired).
void flu_shutdown (void);
Cleans up every resource created by the library.