Chromecast can natively play only these media formats:
- audio: MP3, AAC, Vorbis, Opus, FLAC, WAV
- video: H.264, VP8 (+ HEVC and VP9 for Chromecast Ultra, Chromecast with Google TV and newer hardware with Chromecast embedded). Audio must be AAC (stereo only), MP3, Opus
BubbleUPnP can transcode non natively supported media whenever necessary to make it playable.
Transcoding can be performed out of the box by your Android device (local transcoding), or by installing and running BubbleUPnP Server on a desktop
computer or NAS.
Some Android devices may not be powerful enough to locally transcode some video, but can easily transcode all audio, including audio in videos. The most
common case is transcoding DTS and AC3 audio in MP4/MKV videos, as well as unsupported audio codecs (ALAC, WMA, ...) in music files.
If you must transcode non supported videos formats (AVI, MPEG-2, FLV, ...), please consider instead installing 'BubbleUPnP Server' on a desktop
computer or adequately powerful NAS.
Transcoding support also enables audio/video track selection in videos containing multiple ones.
Local transcoding is not compatible with Chromecast Guest mode.
Local transcoding tips (v4.3 improvements)
Since v4.3, local video transcoding is now hardware accelerated by your Android device, whenever possible.
This results in vastly more efficient transcoding, a tad less processor intensive with less heat and battery drain.
It also makes possible to transcode videos that were too heavy previously (resulting in stutters).
If hardware transcoding fails or is not possible, the app will gracefully fallback to software transcoding.
Hardware transcoding can be disabled in More > Settings > Chromecast transcoding > Use hardware transcoding.
It is recommended to keep it enabled, unless you encounter a video that plays with visual artefacts (wrong colors, broken image,
bad framerate, ...).
Software transcoding has also been improved, made less processor intensive at the expense of using more network
bandwidth (which is usually not a problem). A new 'Faster software encoding' setting is available to make it even
faster (requiring even more network bandwidth for good quality).
With this overhaul, there is a new video quality setting ('Video encode quality') characterized by a max bitrate
for the encode (40, 20, 10, 5 Mbits/s choices) that applies to both hardware and software encoding.
In practice the encoding can be much lower than this maximum, depending on video.
The default is set to 10 Mbits/s which should give good results in most cases, but 20 Mbits/s is advised if the
network bandwidth is available for it (there is no stutter).
What to do if a video is stuttering ?
A video can stutter if:
- when using local trancoding, Android device may not be powerful enough for realtime transcoding of a particularly
demanding video (such as 4K 10-bit or HDR). Using BubbleUPnP Server on a suitably powerful PC or NAS is the only solution.
- home network is not able to keep up with the bandwidth required. Should be infrequent in modern WiFi setups
- BubbleUPnP cannot read the input video fast enough. This would happen mostly for videos hosted on the Internet (cloud service)
or shared from third party app to BubbleUPnP
General tips:
- although hardware accelerated local transcoding can generally work just fine, prefer if possible using 'BubbleUPnP Server' running on a (preferably) wired machine of your network that is powerful enough
and (if possible) with GPU trancoding enabled. Especially if you have demanding high resolution videos to transcode
- use a wired network connection for your Chromecast device whenever possible, as well as your UPnP/DLNA media server if it hosts the video
If using local transcoding:
- make sure 'Hardware transcoding' is enabled
- make sure your Android device is not too far from your WiFi router (or WiFi extender) so the WiFi reception level
is as good as possible (this also applies if using 'BubbleUPnP Server' transcoding with video originating from the 'Local and Cloud' library)
- try changing the encoding quality to a lower bitrate
- try enabling 'Faster software encoding' (will have an effect only if Hardware decoding is disabled or cannot be used)