CastPlayer send correct selected audio track to receiver.
- Dominant language
- Java
- Stars
- 21.9k
- Forks
- 6k
- PR merge metrics
- No merged PRs in 30d
Description
I have media with multiple audio tracks in the manifest, but when I create the MediaItem, I can't see a way to specify the initial audio track. Besides, I would like to be able to change the audio track in the CastPlayer during the playback, in case the user uses the sender to change the audio.
**Exoplayer version:** 2.12.1
```
// If I don't set the metadata, the title doesn't appear in the castMiniController, whereas it did appear in exoplayer 2.11.x
MediaMetadata metadata = new MediaMetadata.Builder()
.setTitle(currentShow.getFormattedTitle())
.build();
MediaItem mediaItem = new MediaItem.Builder()
.setUri(uri)
.setDrmLicenseRequestHeaders(hm)
.setDrmLicenseUri(drmLicenseUrl)
.setDrmUuid(C.WIDEVINE_UUID)
.setMediaId(currentShow.getFormattedTitle())
.setMediaMetadata(metadata)
.setMimeType(mimeType)
.build();
```
I can't obtain the trackSelector in the CastPlayer's implementation, as it basically returns null:

On the other hand, when we change audio tracks in settings for the local player, we do the following:
```
public void onAudioSelected(AudioCheckableItem audioItem) {
MappingTrackSelector.MappedTrackInfo mappedTrackInfo = trackSelector.getCurrentMappedTrackInfo();
if (mappedTrackInfo == null) {
return;
}
int rendererIndex = -1;
for (int i = 0; i < mappedTrackInfo.getRendererCount(); i++) {
TrackGroupArray trackGroups = mappedTrackInfo.getTrackGroups(i);
if (trackGroups.length != 0) {
switch (player.getRendererType(i)) {
case C.TRACK_TYPE_AUDIO:
rendererIndex = i;
break;
case C.TRACK_TYPE_VIDEO:
case C.TRACK_TYPE_TEXT:
default:
break;
}
}
}
if (rendererIndex == -1)
return;
TrackGroupArray trackGroups = mappedTrackInfo.getTrackGroups(rendererIndex);
DefaultTrackSelector.ParametersBuilder parametersBuilder = trackSelector.buildUponParameters();
parametersBuilder.setSelectionOverride(rendererIndex, trackGroups, new DefaultTrackSelector.SelectionOverride(audioItem.getGroupIndex(), audioItem.getTrackIndex()));
trackSelector.setParameters(parametersBuilder);
}
```
I can't find any documentation about this and the only question related (but with subtitles) is at SO and doesn't have any answers: https://stackoverflow.com/questions/61396776/change-subtitle-using-castplayer
Contributor guide
Assessment
This issue has not been assessed yet.