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.

Audio Cast works out of the box with Chromecast, although with 5-8s delay (Chromecast internal buffering). It means that you can play Spotify (and more third party apps) to Chromecast now, without waiting for these apps to be updated!

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 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. 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 require 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:

Playing Audio Cast [root]

Youtube video

Without the license, this feature is limited to 20 minutes of streaming per app launch.

On rooted devices running the Xposed framework, BubbleUPnP can play audio from other apps as a continuous stream to your renderers. This feature is called Audio Cast and its settings are found in Settings > Audio Cast.

It makes possible playing audio from Spotify, SoundCloud, Deezer, Poweramp and many other apps, using these apps for playback control as you would for local playback.

Although Audio Cast works with many apps, it is not technically possible with some apps. Non-exhaustive list of apps known to not work: Tunein, GoneMAD Music Player, XiiaLive.

Use cases

Requirements

Note that the root requirement is only for installing/running Xposed. BubbleUPnP itself doesn't require root permission for Audio Cast.

Installation

  1. If necessary, root your device and install the Xposed framework
  2. make the BubbleUPnP Xposed module active in the Xposed Installer: start the Xposed Installer, tap Modules, enable the BubbleUPnP module entry, reboot your device
  3. in BubbleUPnP, make the local media server active in the Devices tab, then open the "Audio Cast" folder in the Library tab. If everything is setup properly, the single "Audio Cast" item it contains should not display any error message

How to use

Once you have installed all the above requirements:
  1. start your favorite music app and play audio in it
  2. in BubbleUPnP, in the Devices tab, select the renderer you want to play to, and select the local media server. For playing to devices like the PS3 that cannot be remotely controlled (thus not listed as a renderer) but can browse media servers, browse and play the "Audio Cast" item from the device itself, and skip the remaining steps below.
  3. in the Library tab open the "Audio Cast" folder and play the single item it contains
  4. You should now hear your renderer playing audio from the playing app from the first step
  5. use the started app normally for playback control or play music from other apps

Step 1 can also be performed after step 3.

If audio doesn't play on your renderer in step 4, it is possible the app you started is not supported. Note that some apps cannot technically work with Audio Cast.

On the Xbox 360 you must initiate playback of Audio Cast on the Xbox 360 itself in Applications > My Applications > System Music Player > BubbleUPnP Media Server > Albums > [Audio Cast].

On the PS3 you must initiate playback of Audio Cast on the PS3 itself in Music > BubbleUPnP Media Server > Audio Cast. Note that the PS3 has a 10s delay before playing any audio and for reflecting control changes (changing tracks, pause, etc). This cannot be avoided due to how the PS3 handle realtime streams.

At any time you can stop/start playback of the Audio Cast item in BubbleUPnP (Now Playing, notification, widgets) to disable/enable Audio Cast. It will revert to outputing audio on your Android device.

As long as Audio Cast is active, the global Android music volume is muted. Other volume like phone ring volume is unaffected. Stopping Audio Cast playback or exiting BubbleUPnP will unmute local music volume.

When Audio Cast is active but no local audio is playing (either stopped or paused), BubbleUPnP streams silence to the renderer for a maximum of 5 minutes before closing the connection. This is necessary for most renderers to not close the connection. You can change this duration in Settings > Audio Cast > Silent stream max duration. A value of 0 stalls the stream indefinitely without streaming silence. This works with some renderers but most of them will simply disconnect if not receiving audio.

When audio is playing through Audio Cast to a renderer, using hardware volume buttons will modify the renderer's volume and display the BubbleUPnP volume notification instead of the standard Android volume notification, at the system level (including when the screen is off). This volume control is only effective when Audio Cast playback is started from BubbleUPnP, not directly from a renderer (eg PS3).

You can also play the Audio Cast stream in any program able to play WAV http streams, such as desktop music players, web browsers, VLC. Simply play the URL:

http://<ip address>:57645/cast/stream.wav

where <ip address> is your Android device's ip address. You can also display the stream URL by long-pressing the Audio Cast item > Show metadata.

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

Other apps can be used to play audio or video to the currently selected renderer in BubbleUPnP. Note this feature is limited to 3 plays per app launch in the free version of BubbleUPnP so you can preview this functionality with your renderers.

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.

Using the Share menu in other apps

BubbleUpnP registers with other apps in their Share menu when one or several selected media items are selected. 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 in ES File Explorer where you can select multiple media files then use the Share command. There are probably many other apps were this should be useful. Note that it will not work with Youtube or Dailymotion apps but see paragraph below for information on how to play from these apps.

Accessing tunein radios with a web browser

This method describes how to play tunein radios in BubbleUPnP to the current renderer, from an Android web browser. Web browsers that have been tested are Chrome and Firefox.

The steps below explain how to save the radio stream item to a saved playlist, for subsequent playback not requiring to go through the web browser:

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 media from the Web browser

BubbleUPnP registers as being able to play media URLs and should show in your Web Browser app when you click such link. A particular example is playing Internet Radio from TuneIn. This particular site works better on tablets with an account to store presets. Other Internet Radio directory web sites may work too.

Playing SoundCloud streams

To play SoundCloud streams to the current renderer, you need: In the SoundCloud app, simply use the Share button on a music stream and select either BubbleUPnP or SoundCloud UPnP/DLNA as the target. Either one will launch the SoundCloud UPnP/DLNA app, which in turn will allow you to select BubbleUPnP as the target (you can make this the default).

Playing youtube, dailymotion videos

To play youtube or dailymotion videos from the youtube and dailymotion apps, you will need to install semperVidLinks. Use the "share" button in those apps to launch semperVidLinks, in which you will be able to select BubbleUPnP as the target for playback.

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.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.

Example

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