This is the official Google+ home of Google Cast Developers. See "About Community" for important developer links.
See all
Members (7,488)
Leon Nicholls's profile photo
Kristan Uccello's profile photo
Shawn Shen's profile photo
Vadim Gorokhovsky's profile photo
Ali Naddaf's profile photo
Antonio Fontan's profile photo
Wayne Piekarski's profile photo
Gustavo Menezes's profile photo
Majd Bakar's profile photo
Leon Nicholls's profile photo
Mark Scott's profile photo
Prameet Shah's profile photo
John Affaki's profile photo
Jagjit Chawla's profile photo
Raquel Santana's profile photo
QueenHope WindowsPhone's profile photo
Khantha douangmala's profile photo
Mehrzad Karami's profile photo
Madura Pictur's's profile photo
Jerrell Mardis's profile photo
ada koda's profile photo
Gyuri Grell's profile photo
Fung LAM's profile photo
Mateusz Biełous's profile photo


Join this community to post or comment
Pinned by moderator

Wayne Piekarski

Announcements  - 
Today we are releasing the new Google Cast SDK for Android and iOS. This new SDK focuses on making development for Cast quicker, more reliable, and easier to maintain. Learn more about it from our blog post, full documentation, and samples at:

The release notes contain more information about the specifics of the changes. The new Cast SDK v3.0.0 is an upgrade of the Cast Sender v2 APIs for Android and iOS. Improvements focus on significantly reducing the amount of code it takes for you to integrate Cast into your Android and iOS sender apps, while making Cast more reliable and easier to maintain. This was done by standardizing and moving much of the code into a new sender application framework. In addition, these framework APIs were re-designed to be consistent across Android and iOS. And the framework includes full state management that helps you implement the right abstraction between your app and Cast.

Enjoy the new SDK, and share with us what you think about it!

New Google Cast SDK released for Android and iOS

Today we are releasing the new Google Cast SDK for Android and iOS. This new SDK focuses on making development for Cast quicker, more reliable, and easier to maintain. Learn more about it from our blog post, full documentation, and samples at:

Ludovic Olivencia's profile photoJean-Gabriel Mailloux's profile photo
T'is fully understandable to not have it in V3 yet, these things take time and it is fine/better to do them in stages, but a quick word to reassure us would be nice.
Add a comment...
what i pass the contentID of GCKMediaInformation for cast the one image on the TV. I have passed the same url on both GCKMediaMetadata and GCKMediaInformation is correct?? i don't know.I am try to display one image on the TV but this is not loading.What i am missing i don't know someone experience on this please help me .I am beginner on chrome cast. Leon Nicolls help me give me idea. My Code is

GCKMediaMetadata *metadata = [[GCKMediaMetadata alloc] init];
[metadata addImage:[[GCKImage alloc]
initWithURL:[NSURL URLWithString:@""]

GCKMediaInformation *mediaInformation =
[[GCKMediaInformation alloc] initWithContentID:@""
[_mediaControlChannel loadMedia:mediaInformation autoplay:YES playPosition:0];

I am try to load the one image on the TV.
i am passing the same image url on GCKMediaMetadata and GCKMediaInformation object it is correct or not please help me.Thanks in Advance
Add a comment...
how to create a Receiver.html for display the one by one images of the App.please guide me how to create the receiver.html for the App.Thanks in Advance
Leon Nicholls's profile photoNishat Alam's profile photo
Thanks leon Nicholls
Add a comment...
I have added custom receiver.HTML5 and added in developer console when i launched the app image is not showing on the TV.
I am not getting how to call the receiver.html though our iOS Code and set the image when tap the particular image and display on the HDMI TV.Please help me i am beginner in iOS code
Add a comment...

I've got MKV video streaming working great on the CC for regular playback, but when I seek, the receiver goes into a buffering state but does not appear to send any kind of message to the server to tell it to seek to the appropriate position.

I've debugged the receiver app and can see that it receives the seek, but there's no obvious information about how it then requests the new position from the server.

At the server end I don't see any kind of message received to change the playback position. I'd expect some sort of HTTP RANGE command.

Does anyone know the mechanism that CC uses to seek in video on the server?

Or am I going to have to manually implement seek using some sort of stop/start-at-new-position?

Richard Levy's profile photoMichael Pujos's profile photo
You cannot seek in streams generated on the fly, thus with no Content-Length. The only solution is to do what you did.
Add a comment...

I'm attempting to cast video to my ChromeCast using HLS from Subsonic. The Subsonic server will transcode video using FFMPeg and I have control over the command.

If I play in Safari, it works fine. The same stream plays about 5 seconds on the ChromeCast but then stops.

I have captured the log output from the receiver (which is a styled receiver app) if you would like to see it, but here's the error snipet:

media_player.js:23 [ 48.541s] [cast.player.api.Host] error: cast.player.api.ErrorCode.PLAYBACK/102Kb @ media_player.js:23Ib.Zi @ media_player.js:23mb.log @ media_player.js:20Ob @ media_player.js:24J @ media_player.js:98h.nd @ media_player.js:314qc @ media_player.js:32lc @ media_player.js:33(anonymous function) @ media_player.js:30
media_player.js:23 [ 48.548s] [cast.player.api.Player] unload

This error seems to occur when the 2nd 10-second segment is requested.


Michael Pujos's profile photoRichard Levy's profile photo
Thanks for the reply - that's exactly what I was doing with the HLS stream :(. Back to MKV then!
Add a comment...

James Lee

Android  - 
I want to study google cast ,and try to integrat the cast sdk to our phone for local video app use,but I can't find the matched google play service lib ,can anyone help me to find it ,thanks a log.
Paul Trebilcox-Ruiz's profile photoEmilia Dones's profile photo
Confusing to me 
Add a comment...
Hi everyone with working monday,

I'm playing stream with multiple audio tracks (different languages) on Custom Receiver Application (code is based on CastReferencePlayer). By default Cast plays first video track and first audio track from the manifest file. I'd like to allow user select audio track language. So on sender application (iOS) I'm receiving all tracks in the manifest file with using -[GCKMediaInformation mediaTracks];

So for example I have 5 tracks ([track type] and [track identifier]):
GCKMediaTrackTypeVideo 1
GCKMediaTrackTypeAudio 2
GCKMediaTrackTypeAudio 3
GCKMediaTrackTypeAudio 4
GCKMediaTrackTypeAudio 5

I'd like to enable audio track with identifier 4. So I'm calling on sender application the method -[GCKMediaControlChannel setActiveTrackIDs:@[@1, @4]]

But on receiver application I get an error:
[cast.player.api.Host] error: cast.player.api.ErrorCode.PLAYBACK/110 (Failed to execute 'addSourceBuffer' on 'MediaSource': This MediaSource has reached the limit of SourceBuffer objects it can handle. No additional SourceBuffer objects may be added.)

Does anybody know is it possible to switch audio track on the Google Cast?

The full log:
[ 28.632s] [cast.receiver.IpcChannel] Received message: {"data":"{\"type\":\"EDIT_TRACKS_INFO\",\"requestId\":9,\"mediaSessionId\":1,\"activeTrackIds\":[1,4]}","namespace":"","senderId":"866:E1B40DB6-618B-4521-831C-24BDE3A0C38A"}
cast_receiver.js:61 [ 28.638s] [cast.receiver.CastMessageBus] Dispatching CastMessageBus message
cast_receiver.js:61 [ 28.673s] [cast.receiver.MediaManager] MediaManager message received
cast_receiver.js:61 [ 28.676s] [cast.receiver.MediaManager] Dispatching MediaManager ediTracksInfo event
player_drm.js:2243 onEditTracksInfo
cast_receiver.js:61 [ 28.689s] [cast.receiver.MediaManager] Sending broadcast status message
player_drm.js:2243 customizedStatusCallback_: playerState=PLAYING, this.state_=playing
cast_receiver.js:61 [ 28.698s] [cast.receiver.IpcChannel] IPC message sent: {"namespace":"","senderId":"*:*","data":"{\"type\":\"MEDIA_STATUS\",\"status\":[{\"mediaSessionId\":1,\"playbackRate\":1,\"playerState\":\"PLAYING\",\"currentTime\":167493313.705589,\"supportedMediaCommands\":15,\"volume\":{\"level\":1,\"muted\":false},\"currentItemId\":1,\"repeatMode\":\"REPEAT_OFF\"}],\"requestId\":9}"}
media_player.js:23 [ 28.555s] [cast.player.api.Host] error: cast.player.api.ErrorCode.PLAYBACK/110 (Failed to execute 'addSourceBuffer' on 'MediaSource': This MediaSource has reached the limit of SourceBuffer objects it can handle. No additional SourceBuffer objects may be added.)Kb @ media_player.js:23Ib.Zi @ media_player.js:23mb.log @ media_player.js:20Ob @ media_player.js:24J @ media_player.js:98h.createBuffer @ media_player.js:116Pf @ media_player.js:115K @ media_player.js:121h.update @ @ media_player.js:325golive.CastPlayer.onEditTracksInfo_ @ player_drm.js:1786X.Wb @ cast_receiver.js:138Q.pb @ cast_receiver.js:56wc @ cast_receiver.js:42g.dispatchEvent @ cast_receiver.js:41g.T @ cast_receiver.js:54wc @ cast_receiver.js:42g.dispatchEvent @ cast_receiver.js:41g.T @ cast_receiver.js:51
player_drm.js:2243 resetMediaElement_
media_player.js:23 [ 28.562s] [cast.player.api.Player] unload
player_drm.js:2243 Object {onError: Event}
player_drm.js:2243 Object {onError: bc}
media_player.js:23 [ 28.623s] [cast.player.core.QualityManager] 3: initial 96000
media_player.js:310 Uncaught TypeError: Cannot read property 'ka' of nullak @ media_player.js:310h.Lg @ media_player.js:313eg @ media_player.js:131h.Bf @ media_player.js:145Xf @ media_player.js:124K.Fd @ media_player.js:123h.update @ @ media_player.js:325golive.CastPlayer.onEditTracksInfo_ @ player_drm.js:1786X.Wb @ cast_receiver.js:138Q.pb @ cast_receiver.js:56wc @ cast_receiver.js:42g.dispatchEvent @ cast_receiver.js:41g.T @ cast_receiver.js:54wc @ cast_receiver.js:42g.dispatchEvent @ cast_receiver.js:41g.T @ cast_receiver.js:51
player_drm.js:2243 setState_: state=idle, crossfade=true, delay=undefined
cast_receiver.js:61 [ 29.636s] [cast.receiver.TextTracksManager] Disposed TextTracksManager
cast_receiver.js:61 [ 29.657s] [cast.receiver.MediaManager] Sending broadcast status message
player_drm.js:2243 customizedStatusCallback_: playerState=IDLE, this.state_=playing
cast_receiver.js:61 [ 29.662s] [cast.receiver.IpcChannel] IPC message sent: {"namespace":"","senderId":"*:*","data":"{\"type\":\"MEDIA_STATUS\",\"status\":[{\"mediaSessionId\":1,\"playbackRate\":1,\"playerState\":\"IDLE\",\"currentTime\":0,\"supportedMediaCommands\":15,\"volume\":{\"level\":1,\"muted\":false},\"currentItemId\":1,\"idleReason\":\"ERROR\"}],\"requestId\":0}"}
player_drm.js:2243 setState_: state=idle, crossfade=true, delay=undefined
cast_receiver.js:61 [ 29.670s] [cast.receiver.MediaManager] Nothing to reset, Media is already null
player_drm.js:2243 onAbort
Add a comment...

Team Tv

Receiver  - 
Hi guys,

I'm trying to implement the following scenario where the chromecast would play successive streams as seamlessly as possible. Sender app would send a normal media load instruction and at any time, another one could be sent to switch streams on the chromecast device.

What I've got so far:

1. Mobile send cast (stream 1) to Chromecast
2. Chromecast player reproduce stream
3. Mobile send another cast (stream 2) to Chromecast
4. Chromecast player goes to idle state <<< PROBLEM: we want to stop the player ourselves
5. Chromecast load event is dispatched
6. Mobile send another cast (stream 3) to Chromecast
7. Chromecast load event is dispatched and player don't go to idle state (we can stop the previous stream ourselves as desired)

Any suggestion why on Step 4 the player is set to idle and on the exact same use-case on Step 6, that doesn't happen, exactly as we would expect. In fact, we can continue repeating step 6 and 7 and the results is always OK.

Appreciate your help!
Greg St.martin's profile photo
Try that
Add a comment...

Adam Tentis

General Question  - 
Help sending user token from android app to google cast site.

I am writing my first google cast app but when I do the cast I will need to send the users oauth token stored in the app to the tv html site. The chromecast html site needs this token when it requests personalized user data.

I am using the cast companion library but am wondering where I would go about doing this. I am not seeing a lot of information online.

If +Leon Nicholls or anyone else has any advice that would be great. Thanks!
Ali Naddaf's profile photoAdam Tentis's profile photo
+Leon Nicholls I would need to send the token with the cast button as the cast site would need it to get its initial data from my backend. I would also store the token on the cast site via angular cookie store for continued updates.

After initial cast with the token. The phone is pretty much off the hook and the site runs on its own and just gets updated data from my backend
Add a comment...

About this community

Google Cast is the easiest way for developers to share content with a TV. The Google Cast SDK provides everything you need develop Google Cast applications on Android, iOS and desktop Chrome platforms. You may post your app to the community only if you make the source code available for other developers to learn. The Google Cast team monitors and supports several sites and resources that might interest Google Cast SDK developers. Here is how you can use these sites: • Stack Overflow: For your specific coding questions. • GitHub: For filing bugs against the Google Cast sample apps. • Cast issue tracker: For filing general Cast bugs or feature requests. • Google Cast Developers Community : For developers to share their experiences and ask questions about Google Cast which are not explicitly covered by any of the above.
Is there a way to programmatically stop casting? I have found a way to stop current playing content but my app remains connected to cromecast and I am not fully disconnected.
Add a comment...
Hello Piekarski,
Is it possible to create a custom-receiver which can have a bi-directional touch events both on mobile phone and receiver end (ex: user can operation the mobile app on head unit) via the google cast SDK similiar to mirrorlink?
Wayne Piekarski's profile photo
It sounds like you want the Chromecast device to send touch or keyboard events back to the phone? How would you achieve this since Chromecast has no input device?
Add a comment...

Whiz Tech

General Question  - 
Can any one help me with ads with custom reciver?
Add a comment...

Harkeerat Toor

General Question  - 
Hi, I was hoping to update to v3 of the Cast SDK, but have a sender app for iOS and Android which utilizes Remote Display API. There's a version warning on the documentation stating:

"Version warning: This page and the Remote Display API are for use only with Cast SDK v2 and must not be mixed with v3."

So my question is, is there a v3 version of the Remote Display API coming? And if so, is there an ETA?

Add a comment...
I have created custom receiver.HTML5 for the app and added in developer console.when i launched the screen the TV window is display black.what i missed the code i am not getting.
App Description:

My app fetched all the album photos from the facebook and instagram and display it on the HDMI TV.

I have searched the google and google cast sdk site but i am not getting why my TV screen showing black window.Someone help me please share your experience.Leon Nicholls Thanks in Advance
Nishat Alam's profile photo
Makan Not working my receiver.html you have display the image in HDMI TV please share receiver or guide me how to create the Receiver.html for the image media App.Thanks in Advance
Add a comment...

Carlos Solorzano

General Question  - 
How long does it take to get brand approvals at

I filled the form earlier this week and haven't heard back. 
Add a comment...

Tim Hawkins

Receiver  - 
Hello helpful people,

I'm using a media queue to play multiple DASH/SS/HLS/MP4 videos in succession. If one of them fails (e.g. because the URL is bad), my cast.player.api.Host fires 'onError' and the whole queue stops.

Is there a way to resume the queue and start playing the next video using only receiver code? (I can't assume a sender is connected.)

Much appreciated.
Add a comment...
I'm confused by this section of documentation for Chrome Sender apps:

It says "When the user clicks the Cast icon, launch your application and create a Cast session, as follows:" It then gives a one-line code sample. But there is not enough context for where this line goes. How do I know that the user clicked the Cast icon? What callbacks should happen before we call .requestSession()?
John Danek's profile photo
I figured out where my error was. I assumed that "When the user clicks the Cast icon" referred to the Cast extension icon in the toolbar. Instead, it should be an icon in your web page.
Add a comment...
Remote Display API question:

Any code examples for the proper way of dealing with disconnection and trying to reconnect?

If not, is this what I must implement manually:

Add a comment...
Yes, i registered cast device in the Google Cast Developer but i am not sure what file Receiver Application URL. Because my first screen of the app is not load it display the error (Error Code=2 “Network connect timed out”UserInfo=0*7f885c2a1d60{NSLocalizedDescription=Network connection timed out}).

I have filled Receiver Application URL =

i am not sure that i have filled right Receiver Application URL or not please share your experience i am beginner in the google cast SDK. Thanks in advance
my screen display like that....please share your experience
Greg St.martin's profile photoNishat Alam's profile photo
Thank you Leon Nicholls and Greg St.martin this is helpful for me.Thank
Add a comment...