Überblick
Das Native SDK für Android empfängt Untertitel von einem der folgenden Elemente:
- Brightcove-Katalogantwort (Wiedergabe-API): Sidecar WebVTT
- Videomanifest (HLS oder DASH) : In-manifest WebVTT
Weitere Informationen zu Bildunterschriften finden Sie im Verwenden von Untertiteln mit den nativen Brightcove-SDKs dokumentieren.
Ereignisablauf
Das native SDK folgt dieser mit Untertiteln verknüpften Ereignissequenz:
- 
      Abrufen eines Videos aus dem Brightcove-Katalog (z. catalog.findVideoByID()).
- 
      Sidecar-Untertitel werden aus der Katalogantwort geparst und den Videoeigenschaften hinzugefügt. 
- 
      An dieser Stelle können Sie Untertitelquellen wie folgt abrufen: video.getProperties().get(Video.Fields.CAPTION_SOURCES);
- 
      Stellen Sie die Videoansicht ein. Das Video wird zu ExoPlayer hinzugefügt. brightcoveVideoView.add(video);
- 
      Das Native SDK ruft Untertitelquellen ab und gibt das folgende Ereignis aus: EventType.CAPTIONS_LANGUAGES
- 
      Nachdem das Video zu ExoPlayer hinzugefügt wurde, sucht das Native SDK nach Untertiteln im Manifest. Alle Untertitel, die noch nicht in den Video-Untertitelquellen vorhanden sind, werden hinzugefügt. Wenn neue Untertitelquellen vorhanden sind, wird das folgende Ereignis gesendet, um den Brightcove-Mediencontroller zu aktualisieren. EventType.CAPTIONS_LANGUAGES
Untertitel auswählen
Führen Sie diese Schritte aus, um Untertitel programmgesteuert auszuwählen:
- 
      Erstellen Sie eine Methode, um eine bestimmte Untertitelquelle mit dem Sprachcode zu finden. Zum Beispiel: private Pair<Uri, BrightcoveCaptionFormat> getCaptionsForLanguageCode(Video video, String languageCode) { Object payload = video == null ? null : video.getProperties().get(Video.Fields.CAPTION_SOURCES); if (payload instanceof List) { @SuppressWarnings("unchecked") List<Pair<Uri, BrightcoveCaptionFormat>> pairs = (List<Pair<Uri, BrightcoveCaptionFormat>>) payload; for (Pair<Uri, BrightcoveCaptionFormat> pair : pairs) { if (pair.second.language().equals(languageCode)) { return pair; } } } return null; }
- 
      Beachten Sie, dass Untertitelquellen in Pair<Uri, BrightcoveCaptionFormat>. DieUriim Paar gibt den Typ Closed Captions an:- Beiwagen: Die vollständige URL ist vorhanden
- In-Manifest: Das BrightcoveCaptionFormat.BRIGHTCOVE_SCHEME wird verwendet
 
- 
      Erstellen Sie eine Methode, die für die Auswahl von Untertiteln aus einem Video mit einem bestimmten Sprachcode verantwortlich ist, indem Sie die EventType.SELECT_CLOSED_CAPTION_TRACKVeranstaltung.private void selectCaption(Video video, String language) { Pair<Uri, BrightcoveCaptionFormat> pair = getCaptionsForLanguageCode(video, language); if (pair != null && !pair.first.equals(Uri.EMPTY)) { // BrightcoveCaptionFormat.BRIGHTCOVE_SCHEME indicates that is not a URL we need to load with the LoadCaptionsService, but instead we'll be enabled through a different component. if (!pair.first.toString().startsWith(BrightcoveCaptionFormat.BRIGHTCOVE_SCHEME)) { brightcoveVideoView.getClosedCaptioningController().getLoadCaptionsService().loadCaptions(pair.first, pair.second.type()); } Map<String, Object> properties = new HashMap<>(); properties.put(Event.CAPTION_FORMAT, pair.second); properties.put(Event.CAPTION_URI, pair.first); brightcoveVideoView.getEventEmitter().emit(EventType.SELECT_CLOSED_CAPTION_TRACK, properties); } }
- 
      Höre dem zu EventType.CAPTIONS_LANGUAGESEreignis und wählen Sie die gewünschte Sprache über den Sprachcode aus.brightcoveVideoView.getEventEmitter().once(EventType.CAPTIONS_LANGUAGES, new EventListener() { @Override public void processEvent(Event event) { brightcoveVideoView.setClosedCaptioningEnabled(true); // You could find the desired language in the LANGUAGES list. // List<String> languages = event.getProperty(Event.LANGUAGES, List.class); selectCaption(brightcoveVideoView.getCurrentVideo(), "ja"); } });
