Google Cast, branded for consumer devices as Chromecast built-in, is a proprietary protocol developed by Google that enables mobile devices and personal computers to initiate and control playback of Internet-streamed audio/video content on a compatible device, such as a digital media player connected to a high-definition television or home audio system. The protocol was first launched on July 24, 2013, to support Google’s first-generation Chromecast player. The Google Cast SDK was released on February 3, 2014, allowing third parties to modify their software to support the protocol. According to Google, over 20,000 Google Cast-ready apps were available as of May 2015. Google Cast would later be built into the Nexus Player and other Android TV devices (such as televisions), as well as soundbars, speakers, and subsequent Chromecast players. As of October 2017, over 55 million Chromecasts and Chromecast built-in devices have been sold.
Google Cast receivers can stream content via two methods: the first employs mobile and web apps that support the Google Cast technology; the second allows mirroring of content from the web browser Google Chrome running on a personal computer, as well as content displayed on some Android devices. In both cases, playback is initiated through the “cast” button on the sender device.
- The primary method of playing media on the device is through Google Cast–enabled mobile and web apps, which control program selection, playback, and volume. Google Cast receiver devices stream the media from the web within a local version of the Chrome browser, thus freeing the sender device up for other tasks, such as answering a call or using another application, without disrupting playback. Mobile apps enabled for Google Cast are available for both Android 4.1+ and iOS 7.0+; web apps enabled for Google Cast are available on computers running Google Chrome (on Microsoft Windows 7+, macOS 10.7+, and Chrome OS for Chromebooks running Chrome 28+) through the installation of the “Cast extension” in the browser. Streamed content can be Internet-based, as provided by specific apps, or reside on the sender device’s local storage. Apps that provide access to the latter include AllCast, Avia, Plex, and Google Photos.
- Content can also be mirrored from a tab of the Chrome browser (with the Cast extension) on a personal computer or from the screen of some Android 4.4+ devices. In the case of “tab casting”, the quality of the image depends on the processing power of the device, and minimum system requirements apply to video streaming. Content that uses plug-ins, such as Silverlight and QuickTime, does not fully work, as the stream may lack sound or image. Similarly, screen images mirrored from Android devices are typically degraded, reflecting the fact that video displayed on the smaller screens of tablets and smartphones is usually downscaled.
Sender devices previously needed to be connected to the same Wi-Fi network as a Google Cast receiver device to cast content, until the addition of a “guest mode” feature on December 10, 2014; When enabled, the feature allows sender devices to discover a nearby player by detecting ultrasonic audio emitted by the television or speaker system to which the player is connected; alternatively, the sender device can be paired with the receiver device using a four-digit PIN code. Guest mode is only available for Chromecasts; the Nexus Player and Android TV devices do not support the feature.
SDK and compatible apps
Release and distribution
At the time of Chromecast’s launch, four Google Cast-compatible apps were available: YouTube and Netflix were supported as Android, iOS, and Chrome web apps; Google Play Music and Google Play Movies & TV were also supported, but originally only as Android apps. Additional apps supporting casting would require access to the Google Cast software development kit (SDK). The SDK was first released as a preview version on July 24, 2013. Google advised interested developers to use the SDK to create and test apps, but not distribute them. While that admonition remained in force, Google Cast-enabled applications for Hulu Plus and Pandora Radio were released in October 2013, and HBO GO in November. Google invited developers to a two-day hackathon on December 7 at Googleplex, its Mountain View headquarters, offering the opportunity to test drive the SDK’s “upcoming release”. The session attracted 40 developers from 30 companies and was followed by 10 additional apps, including Plex, Avia, and Realplayer Cloud.
Google opened the SDK to all developers on February 3, 2014. In its introductory documentation and video presentation, Google said the SDK worked with both Chromecast devices and other unnamed “cast receiver devices”. Chromecast product manager Rish Chandra said that Google used the intervening time to improve the SDK’s reliability and accommodate those developers who sought a quick and easy way to cast a photo to a television without a lot of coding. Google also made the SDK a part of the Google Play Services framework, thereby giving users access to new apps without having to update Android itself. Over time, many more applications have been updated to support Google Cast. At Google I/O 2014, the company announced that 6,000 registered developers were working on 10,000 Google Cast–ready apps; by the following year’s conference, the number of compatible apps had doubled. Google’s official list of compatible apps and platforms is available on the Chromecast website. Google has published case studies documenting Google Cast integration by Comedy Central, Just Dance Now, Haystack TV and Fitnet.
The development framework has two components: a sender app and a receiver app, both of which make use of APIs provided by the SDK.
- The sender app is based on a vendor’s existing Android or iOS mobile app, or desktop Web app, and provides users with content discovery and media controls, including the ability to select to which device content is streamed. Under the hood, sender apps can detect receiver devices on the same local network, establish a secure channel, and exchange messages.
- The receiver app is a web app executing in a Chrome browser-like environment resident on the cast receiver device. Receiver apps of varying complexities can be developed depending on the variety of content formats the app can play. For example, a simple receiver app might just play HTML5 content, whereas custom receiver apps, which require more programming effort, can take a variety of streaming protocols, including MPEG-DASH, HTTP Live Streaming (HLS), and the Microsoft Smooth Streaming Protocol.
Chromecast supports the image formats BMP, GIF, JPEG, PNG, and WEBP, with a display size limitation of 720p (1280 × 720 pixels). Supported audio codecs are HE-AAC, LC-AAC, MP3, Vorbis, WAV (LPCM), FLAC and Opus; AC-3 (Dolby Digital) and E-AC-3 (EC-3, Dolby Digital Plus) are available for audio pass-through. Supported video codecs for the first and second generation Chromecast are H.264 High Profile Level 4.1 (decoding up to 720p/60 frames per second (fps) or 1080p/30fps) and VP8. The supported video codecs for the Chromecast Ultra are HEVC / H.265 Main and Main 10 Profiles up to level 5.1 (2160p/60fps) and VP9 Profile 0 and Profile 2 up to level 5.1 (2160p/60fps).
Additional functionality and APIs
At International CES 2015, Google announced an expansion to Google Cast called “Google Cast for audio”, which allows apps that support the Google Cast SDK to play audio through compatible Wi-Fi–connected speakers, soundbars, and receivers. Manufacturers supporting Google Cast as a built-in function in their speakers include LG and Sony.
In May 2015, Google introduced new sets of APIs to Google Cast. The Cast Remote Display APIs allow developers to create second-screen experiences for apps such as games without needing to mirror displays. The Game Manager APIs offer developers more options for creating multiplayer games. Lastly, additional APIs were provided to control autoplaying and queuing of content.
In September 2015, Google announced “Fast Play” and accompanying developer tools, which are aimed at reducing the delays between loading content. In a typical scenario, if a user viewed the first three episodes of a television series, the fourth episode might load in the background. The feature’s release has since been delayed.