Search code examples
chromecastgoogle-castcustom-receiver

Load video with second audio stream in chromecast custom receiver


My asset has 2 audio streams: english and hungarian. Sometimes hungarian is the second audio stream, not the first, therefore not the default.

I want to always start playback with hungarian audio. I based my code from Cast-Player-Sample.

Attempt:

After this.onMetadataLoadedOrig_(info); (here) I did:

this.protocol.enableStream(2, true); //enables hungarian
this.protocol.enableStream(1, false);
this.player_.reload();

It doesn't work: player goes to IDLE state and nothing is played. BTW, protocol comes from this.protocol = protocolFunc(host) (here)

The only way I could make it work was to start with the default language and change it only after player is in PLAYING state.

How can I start playback with audio other than default (first)?


Solution

  • I figured it out. You have to enable/disable protocol streams in the onManifestReady callback. This way you don't need to call player.reload().

    onManifestReady

    Notifies the host that a manifest or a master playlist has been loaded and processed by the protocol. This callback can be used to disable the streams enabled by default by the protocol and enable desired streams instead.