From 13a34b8b4a1d6f96c7d498460841b96b9350b9de Mon Sep 17 00:00:00 2001 From: claincly Date: Tue, 27 Apr 2021 14:03:23 +0100 Subject: [PATCH] Relax session timing requirement. Some RTSP servers do not include the RANGE attribute for live contents. #minor-release PiperOrigin-RevId: 370662587 --- .../google/android/exoplayer2/source/rtsp/RtspClient.java | 7 +++++-- .../android/exoplayer2/source/rtsp/RtspSessionTiming.java | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/library/rtsp/src/main/java/com/google/android/exoplayer2/source/rtsp/RtspClient.java b/library/rtsp/src/main/java/com/google/android/exoplayer2/source/rtsp/RtspClient.java index b1ad45c86e..a39ac6c138 100644 --- a/library/rtsp/src/main/java/com/google/android/exoplayer2/source/rtsp/RtspClient.java +++ b/library/rtsp/src/main/java/com/google/android/exoplayer2/source/rtsp/RtspClient.java @@ -443,12 +443,15 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; } public void onDescribeResponseReceived(RtspDescribeResponse response) { + @Nullable String sessionRangeAttributeString = - checkNotNull(response.sessionDescription.attributes.get(SessionDescription.ATTR_RANGE)); + response.sessionDescription.attributes.get(SessionDescription.ATTR_RANGE); try { sessionInfoListener.onSessionTimelineUpdated( - RtspSessionTiming.parseTiming(sessionRangeAttributeString), + sessionRangeAttributeString != null + ? RtspSessionTiming.parseTiming(sessionRangeAttributeString) + : RtspSessionTiming.DEFAULT, buildTrackList(response.sessionDescription, uri)); hasUpdatedTimelineAndTracks = true; } catch (ParserException e) { diff --git a/library/rtsp/src/main/java/com/google/android/exoplayer2/source/rtsp/RtspSessionTiming.java b/library/rtsp/src/main/java/com/google/android/exoplayer2/source/rtsp/RtspSessionTiming.java index 50a0f272c6..9005a53e0a 100644 --- a/library/rtsp/src/main/java/com/google/android/exoplayer2/source/rtsp/RtspSessionTiming.java +++ b/library/rtsp/src/main/java/com/google/android/exoplayer2/source/rtsp/RtspSessionTiming.java @@ -31,7 +31,7 @@ import java.util.regex.Pattern; *

Currently only NPT is supported. See RFC2326 Section 3.6 for detail of NPT. */ public final class RtspSessionTiming { - /** The default session timing starting from 0.000 and indefinite length. */ + /** The default session timing starting from 0.000 and indefinite length, effectively live. */ public static final RtspSessionTiming DEFAULT = new RtspSessionTiming(/* startTimeMs= */ 0, /* stopTimeMs= */ C.TIME_UNSET);