Now Playing

Playlist

Library

Local media server

Accessing online Google Music

You can access your online stored Google Music for streaming to any renderer (including local playback).

To browse Google Music, select the local media server in the Devices tab, then select the "Google Music" root folder in the Library tab.

After choosing your account and initial syncing (no tracks are copied), albums and playlists can be browsed.

The Google Music folder can also be browsed by other devices on the network (Xbox 360, DNLA TV, ...), providing Google Music access to those devices.

Multiple Google accounts are supported with the "Account" action available in the menu of the Google Music library folder, or in Settings > Local Media Server > Google Music

Whenever you update your Google Music collection, you must Sync again to make the changes visible in BubbleUPnP. This is a manual operation done with the "Sync" action available in the menu of the Google Music library folder, or in Settings > Local Media Server > Google Music

Google Music access operates in demo mode in the free version of BubbleUPnP, with the following restrictions that can be removed by purchasing the license:

NOTE: this feature requires 2 new app permissions to be able to access your Google Music (GET_ACCOUNTS and USE_CREDENTIALS).

Chromecast

BubbleUPnP supports playing audio, video and images to Chromecast since v1.8.0.

Youtube video

The free version of BubbleUPnP allows unrestricted playback of all native Chromecast formats:

Non-native formats like AVI, MKV (DTS), MOV, Xvid, WMV, TS, FLAC, WMA and many more are supported through BubbleUPnP Server performing transcoding to compatible formats. Transcoding is restricted to 20 minutes per app launch in the free version on BubbleUPnP, so you can test that it works with your files.

Using Chromecast

Detected Chromecast appears in the Devices tab. There is no "Cast" menu in BubbleUPnP.

When a Chromecast is selected in the Devices tab:

Media is played to Chromecast exactly like you would for an UPnP/DLNA devices.

Stopping playback makes the BubbleUPnP Chromecast app go into idle state (showing "BubbleUPnP" centered).

Starting playback starts the media player on Chromecast. If the Chromecast is currently displaying the Home screen or another app, the BubbleUPnP Chromecast app is automatically started.

While the Chromecast is active in BubbleUPnP, its global volume can be changed regardless of the Chromecast app currently displayed (even the Home screen).

When a Chromecast is unselected in the Devices tab (by selecting another device):

Like UPnP/DLNA devices, Chromecast doesn't have an on-device playback queue. You must leave BubbleUPnP running and connected to the Chromecast for track advance to happen. If you disconnect from a playing Chromecast, it will stop playing when it reaches the end of the track or video.

Unlike UPnP/DLNA devices, it is possible to have several BubbleUPnP instances connected to the same Chromecast showing the same playback state and not interfering between each other for control. You can start playback on an Android device and take control or view playback state on another.

Cloud content managed by BubbleUPnP (and media managed by external media servers) is streamed directly by Chromecast from the cloud. For example, if you play a movie stored on Google Drive and exit BubbleUPnP, the movie will remain playing. You can restart BubbleUPnP at any time for control. Unlike UPnP/DLNA, there is no proxying of cloud streams as Chromecast doesn't need it.

Transcoding with BubbleUPnP Server

(See also the BubbleUPnP Server documentation)

Chromecast has limited media format support. BubbleUPnP's goal is to be able to play to Chromecast all the media that it can access. Hence the need for transcoding.

BubbleUPnP Server 0.8+ is able to transcode most media to compatible formats playable by Chromecast.

Installation

  1. Install BubbleUPnP Server 0.8+ on your network. If installing on a NAS, see below for additional requirements
  2. Go to Settings > Chromecast and verify that BubbleUPnP Server is detected and that "Transcoding" is enabled
  3. for testing, play a non-native media and verify that it plays
  4. (Optional) if you want to also be able to transcode cloud media to your Chromecast while on the go (not at home), you must connect to BubbleUPnP Server in Settings > Setup network wizard. For just LAN transcoding at home this is not needed.

Running BubbleUPnP Server on a NAS

Note that video transcoding can be very CPU intensive and requires a powerful CPU. Only the most powerful NAS will be able to handle it. There are additional requirements when BubbleUPnP Server runs on a NAS:

Transcoding details

If transcoding is active, simply play a non native Chromecast media normally. It will be automatically transcoded by BubbleUPnP Server.

When running Android BubbleUPnP on the same network than BubbleUPnP Server (eg your home LAN), BubbleUPnP Server can transcode all the media that Android BubbleUPnP can access:

When running Android BubbleUPnP on a different network than BubbleUPnP Server (eg your work LAN), BubbleUPnP Server can only transcode media stored in the cloud (provided your performed installation step 4):

For best quality, BubbleUPnP Server smartly transcodes videos, transcoding only what is required or simply remuxing unmodified streams to a different container. For example, a MKV containing H264 video and DTS audio will be transcoded to a MKV containing the unmodified H264 video and the DTS audio transcoded to MP3.

Standalone audio (eg FLAC, WMA, ...) is always transcoded to WAV, with no loss of quality

Using subtitles

External srt subtitles and textual embedded subtitles in video (mostly in MKV) are supported for displaying on the Chromecast.

In both cases, subtitles are shown using the native abilities of Chromecast to display subtitles, and are never the cause of transcoding on their own (unlike solutions retained by other software burning subtitle in the video and causing a lossy transcode)

By default, playing a video will not automatically show subtitles. You must manually select the subtitle, using the subtitle icon that shows up in the Now Playing screen action bar some time after initiating playback (it may take a few seconds to show up for embedded subtitles):

External srt subtitles

External srt subtitles do not require BubbleUPnP Server to be available.

When BubbleUPnP detects that a srt subtitle is associated to a video, it will mention it next to the codec anywhere a video appears in a list (for example: "MKV, subtitles").

It is important to understand that not all external UPnP/DLNA media servers recognize srt sutitles. In that case, BubbleUPnP is unable to display subtitles as from it's point of view, there are none. In particular, Plex and XBMC do not support sending subtitles with UPnP.

If a media server does not directly support srt, possible solutions are:

BubbleUPnP's local media server always recognize srt subtitles for local Android videos and cloud videos (Dropbox, ...)

Embedded subtitles

Embedded subtitles require BubbleUPnP Server to be up and running, and BubbleUPnP 1.8.2+.

Embedded subtitles can be extracted from MKV, MP4 and MOV videos stored on external UPnP/DLNA media servers only. Only embedded subtitles in textual form are supported: SRT, SSA, ... Embedded subtitles stored as bitmap (images) such as dvbsub are NOT supported. For performance reasons, extraction is never performed on videos managed by the local media server, including videos stored in the cloud and sent to BubbleUPnP from third party apps.

Subtitle extraction is a lengthy operation performed only once per video, requiring reading the video fully. It can take up to several minutes to complete before extracted subtitles can be selected in the Now Playing screen subtitle selector. For subsequent playback, no extraction is performed and subtitles are available immediately.

Since extraction requires reading the video fully and is performed while the video is simultaneously playing to Chromecast, it may cause stutter if the video is stored on a media server whose network connection is the same WiFi than Chromecast (bandwidth problem). If that's the case, subtitle extraction can be disabled in Settings > Chromecast > Extract embedded subtitles.

Selecting audio/video tracks

NOTE: This feature requires BubbleUPnP Server.

Some videos include several audio and/or video tracks. For example it may have an english audio track an audio track in a different language.

BubbleUPnP makes it possible to select which audio/video track to play to Chromecast. Simply play a video normally and if any additional audio/video tracks are found, you will be able to select it in the Now Playing screen using the icon in the Action Bar:

Using saved playlists

With BubbleUPnP, you can create and edit saved playlists on the SD Card, for later playback. Saved playlists are listed in the Library tab, in the "Saved playlists" virtual folder.

IMPORTANT: saved playlists do not work too well with Media Servers changing items stream URL when doing a database rescan or rebuild, which makes URLs become invalid and unplayable. With such servers it is not recommended to make playlists. However, BubbleUPnP will ensure that playlist items remain playable even if the Media Server IP address changes.

Creating and adding items to playlists

Creating a new playlist or adding items to an existing one is done with action "Add to playlist". When this action is selected, a chooser will appear for picking the destination playlist or create a new playlist.

Action "Add to playlist" is available in several places:

Renaming, copying, removing, downloading playlists

All those operations are performed from the "Saved playlists" virtual folder in Library. Long-click on a playlist to display its context menu with specific actions:

Editing a playlist

You can edit a playlist from a playlist folder (a subfolder of the "Saved playlists" virtual folder in Library):

Accessing saved playlists remotely from another Control Point

Saved playlist can be accessed from another Control Point (for example another BubbleUPnP instance, to access phone playlists from a tablet) through the local media server. On the other Control Point, browse the local media server and saved playlists will be listed at the root under a "Saved Playlists" folder.

Video and subtitles

Displaying video subtitles with UPnP / DLNA is a complicated matter as it involves the Media Server, Control Point and Renderer to cooperate and the fact that there is no standard to pass them.

There are different ways a Renderer can display subtitles:

  1. subtitles are embedded in the video file for video containers that support embedding, like MKV. Displaying the subtitles is the entire responsibility of the Renderer: it has to recognize them and let the user display them
  2. subtitles are burnt in a transcoded video generated by the Media Server (ex: PS3 Media Server). In that case subs will always display regardless of the Control Point and Renderer. The drawback is that transcoding is required
  3. subtitles are stored in external files (eg: srt, smi, ...) and passed along from the Media Server to the Control Point then to the Renderer, in the metadata associated to a video. The renderer must recognize this information and let the user display subtitles. This is were it gets complicated because there are a lot of pre-conditions for it to work. Samsung TVs may have further requirements towards the Media Server.
Scenarios 1 and 2 and independent of BubbleUPnP, depending entirely on the Renderer and Media Server, respectively. BubbleUPnP will try to deal with scenario 3 as best as it can.

First, you will need a Media Server that recognize external subtitles (most of the time SRT) and expose it to BubbleUPnP so it can pass it to the Renderer. If your Media Server sets subtitles for a video item, BubbleUPnP will display "subtitles" next to the video container (ex: AVI, subtitles). If your Media Server does not support sending subtitles, refer to section below for a workaround

Media servers supporting external subtitles (same filename than the video file, except for the file extension): Serviio (see below), Twonky, Mezzmo, TVMobili, JRiver MediaCenter (see below), BubbleUPnP (as a Media Server).

Media servers *NOT* supporting external subtitles: WMP, XBMC, PLEX, minidlna, mediatomb (may work with patch), PS3 Media Server, Freebox v6

Handling subtitles without Media Server support

If your Media Server does not support subtitles, BubbleUPnP provides a way to serve subtitles itself to your renderer: For any video you want to display subtitles, just copy the subtitle file on your SD card in directory BubbleUPnP/subtitles. The subtitle filename must be the same than the video title reported by BubbleUPnP when browsing videos in the Library tab (which usually will *not* be the same than the filename of the video stored on your Media Server!). Supposing a video is titled "My video", the subtitle file must be:

My video.srt

Although the srt format is generally preferred for compatibility with renderers, other formats are recognized: sub, rxt, smi, sami, ssa, ass, mpl, psb. However your renderer might not support all these formats.

If the video title contains characters that are not valid filesystem characters (:, *, ?, ", <, >, /, \, |), you must replace these characters by _. A video named "My video / example ?" would have the subtitle filename: "My video _ example _.srt"

If BubbleUPnP finds a local subtitle for a video, it will display "subtitle (local)" for that video item.

JRiver Media Center

Streaming video to Android

Streaming video to external Renderer (TV, ...)

Using the Image Gallery

The Image Gallery allows you to see images and photos from any Media Server, on your Android device

Navigation

Slide show

Zoom

Interacting with other apps

Using the Share/Send action in other apps

This premium feature is limited to 3 Share/Send per app launch in the free version of BubbleUPnP.

BubbleUPnP includes extended support to play to the current renderer audio and video streams provided by the standard Share/Send action found in Web browsers and other apps (Youtube, Dailymotion, SoundCloud, MixCloud... and much more!). Simply tap the Share/Send icon or menu item in these apps and select BubbleUPnP as the target. BubbleUPnP will immediately play the media if nothing is playing on the renderer or propose to enqueue the media in the Playlist tab if the renderer is currently playing.

Using Share/Send, you can send media from many apps (feel free to experiment), although it will not work with all apps.

Sharing playlists is supported for Youtube and SoundCloud (and possibly other apps, but untested).

In some apps, you can select and share multiple items to BubbleUPnP. One example of this is the Gallery app. From there you can select one or more images (including from Picasa albums) and send it for viewing to the current renderer. Another example is ES File Explorer where you can select multiple media files then use the Share command. There are probably many other apps where this works.

Send/Share media is appended to the Playlist tab. It is safe to add these items to a Saved Playlist for future playback. The media will play as long as the link is valid.

3 cases are handled, depending on the sharing app sending:

1. a streamable media link

The sharing app sends a direct http link to a mp3, mp4 video stream, etc (example: in Chrome, you tap a mp4 video link). In that case, BubbleUPnP plays the stream directly to the target renderer (assuming it supports the format).

2. a web page containing media links

This is the most common case. For example sharing from Youtube or SoundCloud will send the related web pages (instead of a direct streamable link). BubbleUPnP will extract media links contained in the web page and enqueue them in the Playlist tab. Extraction is provided by the very powerful youtube-dl extractor. The list of supported web sites can be found here.

3. special cases: Dailymotion link, web page containing rtmp streams

BubbleUPnP cannot at this time extract Dailymotion links nor handle web sites whose streams use the rtmp protocol (example: http://thecolbertreport.cc.com/). However, in these cases, BubbleUPnP will redirect the link to the semperVidLinks app for handling, which in turn will make them playable by BubbleUPnP. If semperVidLinks is not installed, you will be prompted to install it.

Displaying lyrics

You can display lyrics (Now Playing menu > Lyrics) if the free musicXmatch app is installed.

Using third party equalizer / DSP apps

You can make third party equalizer / DSP apps (DSP Manager, Equalizer, Beats Audio, MusicFX (Nexus 7), ...) affect the local renderer sound by selecting "Equalizer" in the Now Playing menu. The local renderer has to be active for this option to be present. If the equalizer app remembers app settings, they will be applied on BubbleUPnP start automatically.

Playing tunein radios

Simply play a station in the tunein app and use the Share action to send it to BubbleUPnP.

Playing Pocket Casts podcasts

It is possible to browse and play downloaded podcasts with Pocket Casts. If some podcasts were downloaded, they will be available under the "Pocket Casts" root folder of the local media server. This folder can also be browsed from a remote UPnP or DLNA device (like a PS3 or TV).

Podcasts can also be played from the Pocket Casts app (see screenshot belows). In Pocket Casts, in a subscribed podcast list, long-click a podcast's play button (for downloaded podcasts) or down-arrow button (for not downloaded podcasts) and select "Play in external app" or "Stream in external app". Select BubbleUPnP in the app list to initiate playback to the current renderer.

Playing internet radio (Shoutcast) with XiiaLive

You can play Shoutcast streams with all versions of XiiaLive on all renderers.

For renderers not supporting the Shoutcast protocol, BubbleUPnP will act as a proxy thus it must be left running for the renderer to play the stream.
Renderers supporting Shoutcast streams (ex: WDTV Live, XBMC, foobar2000) are passed the stream URL as is, and it is not required to leave BubbleUPnP running.
You can force the use of the Shoutcast proxy in Shoutcast Radio > Force Shoutcast proxy. It may be needed if a renderer reports to support Shoutcast but fails to play Shoutcast streams, or if the target renderer do not have Internet access.

NOTE: the Now Playing screen will display the shoutcast station name but cannot display dynamic track titles.

TIP: Streams played in XiiaLive are automatically added in the BubbleUPnP Playlist tab. From there, you can add streams to saved playlists for later playback without the need to start XiiaLive.

Playing videos stored on Samba/CIFS share with Mizuu

BubbleUPnP doesn't support accessing media over Samba/CIFS. You can still play such videos with the help of the Mizuu app that will index all your videos and allow you to choose BubbleUPnP as the video player.

Playing files from a file manager

In a file manager like ASTRO or ES File Explorer you can "view" a file in BubbleUPnP which will have the effect of playing it to the target renderer.

Adding widget playback buttons

Although BubbleUPnP provides a widget, it is possible possible to add playback buttons (play/pause/stop/prev/next) as widgets to control the active renderer, through third party apps emulating media buttons (like Media Buttons). For the media playback widget buttons to work, you must enable Settings > Control > Media Keys (enabled by default).

Automation with Tasker and similar

There's a few broadcast intents that can be used with automation tools like Tasker, Locale or Llama.

com.bubblesoft.android.bubbleupnp.START_SERVICE

start the BubbleUPnP in the background (no UI). it will make the last renderer active and load the last Playlist content and make the last track that was played the current one.

com.bubblesoft.android.bubbleupnp.STOP_SERVICE

stop the BubbleUPnP service cleanly, exiting the app.

com.bubblesoft.android.bubbleupnp.SET_RENDERER

Make the specified renderer active. The renderer is specified with a "name" string extra whose value if the renderer name as displayed in the BubbleUPnP renderer list (case sensitive). This intent is only effective if the BubbleUPnP service is already running and devices have beend detected. So if you use this intent just after START_SERVICE, make sure to wait a few seconds until devices are detected.

Show the renderer chooser dialog on app startup

BubbleUPnP accept additional intent extra added to the standard app startup intent to display the renderer chooser popup. Example firing the itent with am (Activity manager):

am start --ez select_renderer true --ez select_renderer_close_ui true com.bubblesoft.android.bubbleupnp/.MainActivity

com.bubblesoft.android.bubbleupnp.GOOGLE_MUSIC_SYNC

Perform a full Google Music Sync (albums + playlists + tracks). Only works if a Google Music account was configured. Can be useful to do automatic scheduled syncs.

com.bubblesoft.android.bubbleupnp.TOGGLE_AUDIO_CAST

Toggle Audio Cast on/off for the current renderer. The current renderer must be an external renderer (eg, not the local renderer) The service must has been started for this intent to have any effect.

com.bubblesoft.android.bubbleupnp.VOLUME_INC, com.bubblesoft.android.bubbleupnp.VOLUME_DEC

Respectively increase or decrease volume of the current renderer by 1 if the current renderer max volume is < 30 (this includes the local renderer), otherwise by the volume step specified in Settings > Control > Volume step (5 by default). The service must has been started for these intents to have any effect.

Example

Suppose you want to start the app and play automatically the latest track you can do the following action: