L'audio alternativo consente di passare da una traccia audio all'altra tra le tracce audio disponibili per una traccia video. Gli utenti possono selezionare la traccia della lingua preferita durante la riproduzione del video.
Quando TVSDK crea l’istanza MediaPlayerItem
per il video corrente, crea un elemento AudioTrack
per ogni traccia audio disponibile. L'elemento contiene una proprietà name
, che è una stringa che in genere contiene una descrizione riconoscibile dall'utente della lingua del brano. L'elemento contiene inoltre informazioni sull'utilizzo predefinito del brano. Quando è il momento di riprodurre il video, è possibile chiedere un elenco di tracce audio disponibili, facoltativamente consentire all'utente di selezionare una traccia e impostare il video da riprodurre con la traccia selezionata.
Anche se raramente, se dopo la creazione della MediaPlayerItem
da parte di TVSDK è disponibile una traccia audio aggiuntiva, TVSDK genera un evento MediaPlayerItem.AUDIO_TRACK_UPDATED
.
Per supportare l’audio alternativo sono state aggiunte le seguenti API:
hasAlternateAudio
Se il supporto specificato dispone di una traccia audio alternativa, diversa dalla traccia predefinita, questa funzione booleana restituisce true
. Se non è presente alcuna traccia audio alternativa, la funzione restituisce false
.
boolean hasAlternateAudio();
** getAudioTracks
*
Questa funzione restituisce l'elenco di tutte le tracce audio attualmente disponibili in un supporto specificato.
List<AudioTrack> getAudioTracks();
getSelectedAudioTrack
Questa funzione restituisce la traccia audio alternativa attualmente selezionata e proprietà quali la lingua. È inoltre possibile estrarre la selezione automatica del brano.
AudioTrack getSelectedAudioTrack();
selectAudioTrack
Questa funzione seleziona una traccia audio alternativa da riprodurre.
void selectAudioTrack(AudioTrack audioTrack);
Ad esempio:
private void onPrepared() {
// Select the AA track in PREPARED State
boolean hasAlternateAudio = _mediaPlayer.getCurrentItem().hasAlternateAudio();
if(hasAlternateAudio) {
AudioTrack selectedAudioTrack =
_mediaPlayer.getCurrentItem().getSelectedAudioTrack();
if (selectedAudioTrack == null) {
// Selecting default audio track
// If index is 1 it will select alternate audio track
selectedAudioTrack = _mediaPlayer.getCurrentItem().getAudioTracks().get(0);
}
}
_mediaPlayer.getCurrentItem().selectAudioTrack(selectedAudioTrack);
}