Zeitversetzte Nutzung unterstützen

Verwenden Sie zeitversetzte APIs in Ihrem TV-Eingabedienst, damit Nutzer Inhalte pausieren, zurückspulen und Live-Programme in deinen Dienstkanälen vorspulen. Wenn Ihre App zeitversetzt sind, können Nutzer flexibel entscheiden, wie sie sich deine Inhalte ansehen:

  • Nutzer können Programme bei kurzfristiger Unterbrechung pausieren. verpassen sie keine wichtigen Momente.
  • Nutzer können Inhalte, die sie bereits gesehen haben, oder Inhalte, die sie bereits gesehen haben, vorspulen. oder interessiert sie nicht.
  • Nutzer können zurückspulen und sich ihre Lieblingsmomente in Programminhalten noch einmal ansehen.

Abbildung 1: Wiedergabesteuerung von Android TV für zeitversetztes Fernsehen

Bei der zeitversetzten Nutzung werden kurze, temporäre, aufgezeichnete Segmente von Programmdaten verwendet, die Möglichkeit zur Wiedergabe von Live-Programmen implementieren. Zeitversetztes Fernsehen kann nicht abgespielt werden Aufnahmen außerhalb der aktuellen Wiedergabesitzung. Das bedeutet, dass sie zeitversetztes Fernsehen, um ein Programm zu pausieren, um es am nächsten Tag anzusehen, oder um ein Programm zu pausieren später ansehen, während sie zu einem anderen Kanal wechseln.

Verwende bei Bedarf die TV-Aufzeichnungs-APIs. um deinen Nutzern die Möglichkeit zu geben, Programminhalte aufzuzeichnen, die sie sich außerhalb der aktuellen Wiedergabe ansehen können Sitzung.

Unterstützung für zeitversetztes Fernsehen hinzufügen

Um Ihrem TV-Eingabedienst zeitversetztes Fernsehen zu unterstützen, müssen Sie den zeitversetzte APIs in Ihrer TvInputService.Session-Klasse, die Aufzeichnung und Wiedergabe von zeitversetzten System, das Ihr Eingabedienst zeitversetztes Fernsehen unterstützt.

Die von Ihnen implementierten TvInputService.Session-Methoden sind Folgendes:

Weitere Informationen dazu, wie Sie das von Ihrem Eingabedienst unterstützte System informieren zeitversetztes Fernsehen, siehe System über den Status der zeitversetzten Nutzung informieren .

Wenn Sie die TIF-Companion-Bibliothek zum Implementieren TvInputService.Session Kurs, Sie erhalten automatisch eine Implementierung der zeitversetzten Nutzung mit ExoPlayer Sie können diese oder die zeitversetzten BaseTvInputService.Session und eigene erstellen Implementierung. Weitere Informationen zur Verwendung der TIF-Companion-Bibliothek finden Sie unter TV-Eingabedienst mit der TIF-Companion-Bibliothek

Inhalte zu Beginn einer Sitzung aufzeichnen

Nutzer können Programminhalte anhalten, zurückspulen und vorspulen, indem sie auf die Wiedergabesteuerung für den Kanal, entweder durch Drücken von Auswählen während ansehen und dann zur Wiedergabesteuerung navigieren eine spezielle Wiedergabesteuerung auf einem Remote-Gerät.

Da die Nutzenden zeitversetztes Fernsehen, wenn du dir Programminhalte ansiehst, muss der Eingabedienst mit der Aufzeichnung zeitversetzter Inhalte beginnen, sobald der Nutzer auf einen Kanal in deinem onTune() Implementierung. Außerdem müssen Sie um das System darüber zu informieren, dass Sie eine Aufzeichnung durchführen können, indem Sie notifyTimeShiftStatusChanged(int), wie in den System über den Status der zeitversetzten Nutzung informieren .

Speicherung aufgenommener Inhalte verwalten

Ihr TV-Eingabedienst ist für die Speicherung zeitversetzter Aufnahmen in privaten App-Speicher und die Wiedergabe von Inhalten, wenn das System anruft Ihre Methoden der zeitversetzten Nutzung, z. B. onTimeShiftResume() Wenn Ihre Inhalte bereits in der Cloud gespeichert sind und Ihre App zeitversetzte Aufnahmen in der Cloud speichern, des App-Speichers.

Falls in Ihren Inhalten geschützte Inhalte verwendet werden, ist Ihr TV-Eingabedienst für ordnungsgemäße Verschlüsselung aufgezeichneter Inhalte und Entschlüsselung der Inhalte während Wiedergabe starten.

Da aufgezeichnete Videoinhalte viel Speicherplatz benötigen, müssen Sie Aufgezeichnete Inhalte während der Sitzungswiedergabe sorgfältig verwalten. Wenn die Wiedergabe die Zeit überschreitet, die Sie aufzeichnen und speichern können, zeitversetztes Fernsehen, passen Sie die Aufzeichnung an, um den aktuellen Zwischenspeicher geladen werden, aber stellen Sie sicher, dass die aktuelle Uhrzeit erfasst wird. Wenn Nutzende beispielsweise Inhalte seit 31 Minuten abgespielt wurden und deine maximale zeitversetzte Aufnahme bei einer Dauer von 30 Minuten Minute 1 bis Minute 31.

Wenn Ihr TV-Eingabedienst das zeitversetzte Fernsehen nicht unterstützt, müssen Sie das System informieren. Weitere Informationen zur Benachrichtigung System zu Supporteinschränkungen für die zeitversetzte Nutzung finden Sie in den System über den Status der zeitversetzten Nutzung informieren .

Wenn der Nutzer zu einem anderen Kanal wechselt oder die Wiedergabe auf andere Weise beendet -Sitzung, löschen Sie Ihre aufgezeichneten zeitversetzten Daten.

System über den Status der zeitversetzten Nutzung informieren

Wenn Ihr TV-Eingabedienst zeitversetztes Fernsehen unterstützt, rufen Sie notifyTimeShiftStatusChanged(TvInputManager.TIME_SHIFT_STATUS_AVAILABLE) in deinem Implementierung von onTune(), wenn ein Nutzer abgestimmt mit einem Kanal verknüpft sind.

Um das System zu informieren, wenn Ihr Eingabedienst zeitversetzte Funktionen bietet ändern, verwenden notifyTimeShiftStatusChanged(int) Wenn Ihr TV-Eingabedienst beispielsweise keine zeitversetzte Nutzung unterstützt, Wenn Sie Speicherplatz oder andere Gründe haben, können Sie sich unter notifyTimeShiftStatusChanged(TvInputManager.TIME_SHIFT_STATUS_UNAVAILABLE)

Wenn dein TV-Eingabedienst das zeitversetzte Fernsehen nicht unterstützt, kannst du dich unter notifyTimeShiftStatusChanged(TvInputManager.TIME_SHIFT_STATUS_UNSUPPORTED) Eine Wiedergabesitzung wird erstellt. Das System behandelt jeden Eingabedienst, ruft nie an notifyTimeShiftStatusChanged() als Eingabedienst, der keinen die zeitversetzte Nutzung unterstützen. Dies umfasst Eingabedienste mit API-Level 22 und zuvor.

Wiedergabedauer erfassen

Die Startposition einer zeitversetzten Aufnahme ist die früheste absolute Zeit. Position in Millisekunden seit der Epoche, zu der der Nutzer springen kann. Dies ist in der Regel nach dem Start der Videowiedergabe onTune() wird aufgerufen. Wenn sich der Nutzer jedoch eine Menge Inhalte ansieht, deine App aufzeichnen kann, musst du mit der Aufzeichnung eines neuen Segments zeitversetzt und die Startzeit entsprechend aktualisieren.

Die aktuelle Position einer zeitversetzten Aufnahme ist die aktuelle Wiedergabe. Position in Millisekunden seit der Epoche. Diese Position ändert sich kontinuierlich während der Wiedergabe. Normalerweise können Sie dies mit Ihrer Wiedergabe-Engine feststellen. wie im folgenden Beispiel gezeigt:

Kotlin

override fun onTimeShiftGetCurrentPosition(): Long =
        tvPlayer?.run {
            currentProgram?.let { program ->
                currentPosition + program.startTimeUtcMillis
            }
        } ?: TvInputManager.TIME_SHIFT_INVALID_TIME

Java

@Override
public long onTimeShiftGetCurrentPosition() {
  if (getTvPlayer() != null && currentProgram != null) {
    return getTvPlayer().getCurrentPosition() +
      currentProgram.getStartTimeUtcMillis();
  }
  return TvInputManager.TIME_SHIFT_INVALID_TIME;
}

Achten Sie darauf, dass Sie die Startzeit angeben, zu der das System Ihre onTimeShiftGetStartPosition() ist nie größer als die aktuelle Zeitposition, die Sie in onTimeShiftGetCurrentPosition(). Das System nutzt diese Aufrufe, um die Dauer der zeitversetzten Nutzung in der Benutzeroberfläche für die Wiedergabesteuerung aktualisieren.

Wiedergabeparameter unterstützen

Zum Ändern der Wiedergabegeschwindigkeit beim zeitversetzten Fernsehen verwendet das System Wiedergabeparameter. Für Wenn der Nutzer beispielsweise die aktuelle Wiedergabe zurückspult, werden Parameter mit einer negativen Wiedergabegeschwindigkeit an deine App übergeben. Zeitversetztes Fernsehen unterstützt auch verschiedene Stufen, 2- oder 3-fache Wiedergabegeschwindigkeit. zum Zurückspulen oder Vorspulen.

Das System ruft Ihre onTimeShiftSetPlaybackParams(PlaybackParams) mit einem PlaybackParams-Objekt, das Folgendes enthält: Parameter für die aktuelle Sitzung. Anhand dieser Informationen können Sie die Medienwiedergabe-Engine entsprechend konfigurieren.

Wenn deine Wiedergabe-Engine einen Parameter nicht unterstützt, das erwartete Verhalten so gut wie möglich emulieren. Wenn beispielsweise Ihre Wiedergabe 2-fache Geschwindigkeit nicht unterstützt; wiederholte Suchvorgänge bei der Wiedergabe verwenden um eine ungefähr doppelt so hohe Wiedergabegeschwindigkeit zu erreichen.

Ändern Sie die Einstellungen nach dem Festlegen der Parameter nur dann, wenn der Nutzer gibt einen Wiedergabebefehl aus, der einen anderen Parameter oder Schalter erfordert einem neuen Kanal zugewiesen.