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).
BubbleUPnP supports playing audio, video and images to Chromecast since v1.8.0.
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.
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.
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
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
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.
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:
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 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:
There are different ways a Renderer can display subtitles:
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
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.
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.
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.
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: