Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
SDK
/
exoplayer
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
a6315597
authored
Sep 22, 2021
by
ibaker
Committed by
bachinger
Sep 23, 2021
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Use the new MediaItem.Builder#setLiveConfiguration method
PiperOrigin-RevId: 398215071
parent
fefa6cb8
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
141 additions
and
43 deletions
docs/live-streaming.md
library/core/src/test/java/com/google/android/exoplayer2/ExoPlayerTest.java
library/core/src/test/java/com/google/android/exoplayer2/source/DefaultMediaSourceFactoryTest.java
library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java
library/dash/src/test/java/com/google/android/exoplayer2/source/dash/DashMediaSourceTest.java
library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaSource.java
library/hls/src/test/java/com/google/android/exoplayer2/source/hls/HlsMediaSourceTest.java
docs/live-streaming.md
View file @
a6315597
...
@@ -106,7 +106,10 @@ SimpleExoPlayer player =
...
@@ -106,7 +106,10 @@ SimpleExoPlayer player =
MediaItem mediaItem =
MediaItem mediaItem =
new MediaItem.Builder()
new MediaItem.Builder()
.setUri(mediaUri)
.setUri(mediaUri)
.setLiveMaxPlaybackSpeed(1.02f)
.setLiveConfiguration(
new MediaItem.LiveConfiguration.Builder()
.setMaxPlaybackSpeed(1.02f)
.build())
.build();
.build();
player.setMediaItem(mediaItem);
player.setMediaItem(mediaItem);
~~~
~~~
...
...
library/core/src/test/java/com/google/android/exoplayer2/ExoPlayerTest.java
View file @
a6315597
...
@@ -9101,7 +9101,11 @@ public final class ExoPlayerTest {
...
@@ -9101,7 +9101,11 @@ public final class ExoPlayerTest {
/* defaultPositionUs= */
8
*
C
.
MICROS_PER_SECOND
,
/* defaultPositionUs= */
8
*
C
.
MICROS_PER_SECOND
,
/* windowOffsetInFirstPeriodUs= */
C
.
msToUs
(
windowStartUnixTimeMs
),
/* windowOffsetInFirstPeriodUs= */
C
.
msToUs
(
windowStartUnixTimeMs
),
AdPlaybackState
.
NONE
,
AdPlaybackState
.
NONE
,
new
MediaItem
.
Builder
().
setUri
(
Uri
.
EMPTY
).
setLiveTargetOffsetMs
(
9_000
).
build
()));
new
MediaItem
.
Builder
()
.
setUri
(
Uri
.
EMPTY
)
.
setLiveConfiguration
(
new
MediaItem
.
LiveConfiguration
.
Builder
().
setTargetOffsetMs
(
9_000
).
build
())
.
build
()));
Player
.
Listener
mockListener
=
mock
(
Player
.
Listener
.
class
);
Player
.
Listener
mockListener
=
mock
(
Player
.
Listener
.
class
);
player
.
addListener
(
mockListener
);
player
.
addListener
(
mockListener
);
player
.
pause
();
player
.
pause
();
...
@@ -9146,7 +9150,11 @@ public final class ExoPlayerTest {
...
@@ -9146,7 +9150,11 @@ public final class ExoPlayerTest {
/* defaultPositionUs= */
8
*
C
.
MICROS_PER_SECOND
,
/* defaultPositionUs= */
8
*
C
.
MICROS_PER_SECOND
,
/* windowOffsetInFirstPeriodUs= */
C
.
msToUs
(
windowStartUnixTimeMs
),
/* windowOffsetInFirstPeriodUs= */
C
.
msToUs
(
windowStartUnixTimeMs
),
AdPlaybackState
.
NONE
,
AdPlaybackState
.
NONE
,
new
MediaItem
.
Builder
().
setUri
(
Uri
.
EMPTY
).
setLiveTargetOffsetMs
(
9_000
).
build
()));
new
MediaItem
.
Builder
()
.
setUri
(
Uri
.
EMPTY
)
.
setLiveConfiguration
(
new
MediaItem
.
LiveConfiguration
.
Builder
().
setTargetOffsetMs
(
9_000
).
build
())
.
build
()));
player
.
pause
();
player
.
pause
();
player
.
seekTo
(
18_000
);
player
.
seekTo
(
18_000
);
...
@@ -9187,7 +9195,11 @@ public final class ExoPlayerTest {
...
@@ -9187,7 +9195,11 @@ public final class ExoPlayerTest {
/* defaultPositionUs= */
8
*
C
.
MICROS_PER_SECOND
,
/* defaultPositionUs= */
8
*
C
.
MICROS_PER_SECOND
,
/* windowOffsetInFirstPeriodUs= */
C
.
msToUs
(
windowStartUnixTimeMs
),
/* windowOffsetInFirstPeriodUs= */
C
.
msToUs
(
windowStartUnixTimeMs
),
AdPlaybackState
.
NONE
,
AdPlaybackState
.
NONE
,
new
MediaItem
.
Builder
().
setUri
(
Uri
.
EMPTY
).
setLiveTargetOffsetMs
(
9_000
).
build
()));
new
MediaItem
.
Builder
()
.
setUri
(
Uri
.
EMPTY
)
.
setLiveConfiguration
(
new
MediaItem
.
LiveConfiguration
.
Builder
().
setTargetOffsetMs
(
9_000
).
build
())
.
build
()));
player
.
pause
();
player
.
pause
();
player
.
setMediaSource
(
new
FakeMediaSource
(
timeline
));
player
.
setMediaSource
(
new
FakeMediaSource
(
timeline
));
player
.
prepare
();
player
.
prepare
();
...
@@ -9230,7 +9242,11 @@ public final class ExoPlayerTest {
...
@@ -9230,7 +9242,11 @@ public final class ExoPlayerTest {
/* defaultPositionUs= */
8
*
C
.
MICROS_PER_SECOND
,
/* defaultPositionUs= */
8
*
C
.
MICROS_PER_SECOND
,
/* windowOffsetInFirstPeriodUs= */
C
.
msToUs
(
windowStartUnixTimeMs
),
/* windowOffsetInFirstPeriodUs= */
C
.
msToUs
(
windowStartUnixTimeMs
),
AdPlaybackState
.
NONE
,
AdPlaybackState
.
NONE
,
new
MediaItem
.
Builder
().
setUri
(
Uri
.
EMPTY
).
setLiveTargetOffsetMs
(
9_000
).
build
()));
new
MediaItem
.
Builder
()
.
setUri
(
Uri
.
EMPTY
)
.
setLiveConfiguration
(
new
MediaItem
.
LiveConfiguration
.
Builder
().
setTargetOffsetMs
(
9_000
).
build
())
.
build
()));
Timeline
updatedTimeline
=
Timeline
updatedTimeline
=
new
FakeTimeline
(
new
FakeTimeline
(
new
TimelineWindowDefinition
(
new
TimelineWindowDefinition
(
...
@@ -9244,7 +9260,11 @@ public final class ExoPlayerTest {
...
@@ -9244,7 +9260,11 @@ public final class ExoPlayerTest {
/* defaultPositionUs= */
8
*
C
.
MICROS_PER_SECOND
,
/* defaultPositionUs= */
8
*
C
.
MICROS_PER_SECOND
,
/* windowOffsetInFirstPeriodUs= */
C
.
msToUs
(
windowStartUnixTimeMs
+
50_000
),
/* windowOffsetInFirstPeriodUs= */
C
.
msToUs
(
windowStartUnixTimeMs
+
50_000
),
AdPlaybackState
.
NONE
,
AdPlaybackState
.
NONE
,
new
MediaItem
.
Builder
().
setUri
(
Uri
.
EMPTY
).
setLiveTargetOffsetMs
(
4_000
).
build
()));
new
MediaItem
.
Builder
()
.
setUri
(
Uri
.
EMPTY
)
.
setLiveConfiguration
(
new
MediaItem
.
LiveConfiguration
.
Builder
().
setTargetOffsetMs
(
4_000
).
build
())
.
build
()));
FakeMediaSource
fakeMediaSource
=
new
FakeMediaSource
(
initialTimeline
);
FakeMediaSource
fakeMediaSource
=
new
FakeMediaSource
(
initialTimeline
);
player
.
pause
();
player
.
pause
();
player
.
setMediaSource
(
fakeMediaSource
);
player
.
setMediaSource
(
fakeMediaSource
);
...
@@ -9304,7 +9324,11 @@ public final class ExoPlayerTest {
...
@@ -9304,7 +9324,11 @@ public final class ExoPlayerTest {
/* defaultPositionUs= */
20
*
C
.
MICROS_PER_SECOND
,
/* defaultPositionUs= */
20
*
C
.
MICROS_PER_SECOND
,
/* windowOffsetInFirstPeriodUs= */
C
.
msToUs
(
windowStartUnixTimeMs
),
/* windowOffsetInFirstPeriodUs= */
C
.
msToUs
(
windowStartUnixTimeMs
),
AdPlaybackState
.
NONE
,
AdPlaybackState
.
NONE
,
new
MediaItem
.
Builder
().
setUri
(
Uri
.
EMPTY
).
setLiveTargetOffsetMs
(
9_000
).
build
()));
new
MediaItem
.
Builder
()
.
setUri
(
Uri
.
EMPTY
)
.
setLiveConfiguration
(
new
MediaItem
.
LiveConfiguration
.
Builder
().
setTargetOffsetMs
(
9_000
).
build
())
.
build
()));
Player
.
Listener
mockListener
=
mock
(
Player
.
Listener
.
class
);
Player
.
Listener
mockListener
=
mock
(
Player
.
Listener
.
class
);
player
.
addListener
(
mockListener
);
player
.
addListener
(
mockListener
);
player
.
pause
();
player
.
pause
();
...
@@ -9353,7 +9377,11 @@ public final class ExoPlayerTest {
...
@@ -9353,7 +9377,11 @@ public final class ExoPlayerTest {
/* defaultPositionUs= */
8
*
C
.
MICROS_PER_SECOND
,
/* defaultPositionUs= */
8
*
C
.
MICROS_PER_SECOND
,
/* windowOffsetInFirstPeriodUs= */
C
.
msToUs
(
windowStartUnixTimeMs
),
/* windowOffsetInFirstPeriodUs= */
C
.
msToUs
(
windowStartUnixTimeMs
),
AdPlaybackState
.
NONE
,
AdPlaybackState
.
NONE
,
new
MediaItem
.
Builder
().
setUri
(
Uri
.
EMPTY
).
setLiveTargetOffsetMs
(
9_000
).
build
()));
new
MediaItem
.
Builder
()
.
setUri
(
Uri
.
EMPTY
)
.
setLiveConfiguration
(
new
MediaItem
.
LiveConfiguration
.
Builder
().
setTargetOffsetMs
(
9_000
).
build
())
.
build
()));
player
.
pause
();
player
.
pause
();
player
.
addMediaSource
(
new
FakeMediaSource
(
nonLiveTimeline
));
player
.
addMediaSource
(
new
FakeMediaSource
(
nonLiveTimeline
));
player
.
addMediaSource
(
new
FakeMediaSource
(
liveTimeline
));
player
.
addMediaSource
(
new
FakeMediaSource
(
liveTimeline
));
...
@@ -9393,7 +9421,11 @@ public final class ExoPlayerTest {
...
@@ -9393,7 +9421,11 @@ public final class ExoPlayerTest {
/* defaultPositionUs= */
8
*
C
.
MICROS_PER_SECOND
,
/* defaultPositionUs= */
8
*
C
.
MICROS_PER_SECOND
,
/* windowOffsetInFirstPeriodUs= */
C
.
msToUs
(
windowStartUnixTimeMs
),
/* windowOffsetInFirstPeriodUs= */
C
.
msToUs
(
windowStartUnixTimeMs
),
AdPlaybackState
.
NONE
,
AdPlaybackState
.
NONE
,
new
MediaItem
.
Builder
().
setUri
(
Uri
.
EMPTY
).
setLiveTargetOffsetMs
(
9_000
).
build
()));
new
MediaItem
.
Builder
()
.
setUri
(
Uri
.
EMPTY
)
.
setLiveConfiguration
(
new
MediaItem
.
LiveConfiguration
.
Builder
().
setTargetOffsetMs
(
9_000
).
build
())
.
build
()));
Timeline
liveTimeline2
=
Timeline
liveTimeline2
=
new
FakeTimeline
(
new
FakeTimeline
(
new
TimelineWindowDefinition
(
new
TimelineWindowDefinition
(
...
@@ -9407,7 +9439,11 @@ public final class ExoPlayerTest {
...
@@ -9407,7 +9439,11 @@ public final class ExoPlayerTest {
/* defaultPositionUs= */
8
*
C
.
MICROS_PER_SECOND
,
/* defaultPositionUs= */
8
*
C
.
MICROS_PER_SECOND
,
/* windowOffsetInFirstPeriodUs= */
C
.
msToUs
(
windowStartUnixTimeMs
),
/* windowOffsetInFirstPeriodUs= */
C
.
msToUs
(
windowStartUnixTimeMs
),
AdPlaybackState
.
NONE
,
AdPlaybackState
.
NONE
,
new
MediaItem
.
Builder
().
setUri
(
Uri
.
EMPTY
).
setLiveTargetOffsetMs
(
4_000
).
build
()));
new
MediaItem
.
Builder
()
.
setUri
(
Uri
.
EMPTY
)
.
setLiveConfiguration
(
new
MediaItem
.
LiveConfiguration
.
Builder
().
setTargetOffsetMs
(
4_000
).
build
())
.
build
()));
player
.
pause
();
player
.
pause
();
player
.
addMediaSource
(
new
FakeMediaSource
(
liveTimeline1
));
player
.
addMediaSource
(
new
FakeMediaSource
(
liveTimeline1
));
player
.
addMediaSource
(
new
FakeMediaSource
(
liveTimeline2
));
player
.
addMediaSource
(
new
FakeMediaSource
(
liveTimeline2
));
...
@@ -9451,7 +9487,11 @@ public final class ExoPlayerTest {
...
@@ -9451,7 +9487,11 @@ public final class ExoPlayerTest {
/* defaultPositionUs= */
8
*
C
.
MICROS_PER_SECOND
,
/* defaultPositionUs= */
8
*
C
.
MICROS_PER_SECOND
,
/* windowOffsetInFirstPeriodUs= */
C
.
msToUs
(
windowStartUnixTimeMs
),
/* windowOffsetInFirstPeriodUs= */
C
.
msToUs
(
windowStartUnixTimeMs
),
AdPlaybackState
.
NONE
,
AdPlaybackState
.
NONE
,
new
MediaItem
.
Builder
().
setUri
(
Uri
.
EMPTY
).
setLiveTargetOffsetMs
(
9_000
).
build
()));
new
MediaItem
.
Builder
()
.
setUri
(
Uri
.
EMPTY
)
.
setLiveConfiguration
(
new
MediaItem
.
LiveConfiguration
.
Builder
().
setTargetOffsetMs
(
9_000
).
build
())
.
build
()));
Timeline
liveTimeline2
=
Timeline
liveTimeline2
=
new
FakeTimeline
(
new
FakeTimeline
(
new
TimelineWindowDefinition
(
new
TimelineWindowDefinition
(
...
@@ -9465,7 +9505,11 @@ public final class ExoPlayerTest {
...
@@ -9465,7 +9505,11 @@ public final class ExoPlayerTest {
/* defaultPositionUs= */
8
*
C
.
MICROS_PER_SECOND
,
/* defaultPositionUs= */
8
*
C
.
MICROS_PER_SECOND
,
/* windowOffsetInFirstPeriodUs= */
C
.
msToUs
(
windowStartUnixTimeMs
),
/* windowOffsetInFirstPeriodUs= */
C
.
msToUs
(
windowStartUnixTimeMs
),
AdPlaybackState
.
NONE
,
AdPlaybackState
.
NONE
,
new
MediaItem
.
Builder
().
setUri
(
Uri
.
EMPTY
).
setLiveTargetOffsetMs
(
4_000
).
build
()));
new
MediaItem
.
Builder
()
.
setUri
(
Uri
.
EMPTY
)
.
setLiveConfiguration
(
new
MediaItem
.
LiveConfiguration
.
Builder
().
setTargetOffsetMs
(
4_000
).
build
())
.
build
()));
player
.
pause
();
player
.
pause
();
player
.
addMediaSource
(
new
FakeMediaSource
(
liveTimeline1
));
player
.
addMediaSource
(
new
FakeMediaSource
(
liveTimeline1
));
player
.
addMediaSource
(
new
FakeMediaSource
(
liveTimeline2
));
player
.
addMediaSource
(
new
FakeMediaSource
(
liveTimeline2
));
...
@@ -9492,7 +9536,11 @@ public final class ExoPlayerTest {
...
@@ -9492,7 +9536,11 @@ public final class ExoPlayerTest {
new
FakeClock
(
/* initialTimeMs= */
987_654_321L
,
/* isAutoAdvancing= */
true
);
new
FakeClock
(
/* initialTimeMs= */
987_654_321L
,
/* isAutoAdvancing= */
true
);
ExoPlayer
player
=
new
TestExoPlayerBuilder
(
context
).
setClock
(
fakeClock
).
build
();
ExoPlayer
player
=
new
TestExoPlayerBuilder
(
context
).
setClock
(
fakeClock
).
build
();
MediaItem
mediaItem
=
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
setUri
(
Uri
.
EMPTY
).
setLiveTargetOffsetMs
(
4_000
).
build
();
new
MediaItem
.
Builder
()
.
setUri
(
Uri
.
EMPTY
)
.
setLiveConfiguration
(
new
MediaItem
.
LiveConfiguration
.
Builder
().
setTargetOffsetMs
(
4_000
).
build
())
.
build
();
Timeline
liveTimeline
=
Timeline
liveTimeline
=
new
SinglePeriodTimeline
(
new
SinglePeriodTimeline
(
/* presentationStartTimeMs= */
C
.
TIME_UNSET
,
/* presentationStartTimeMs= */
C
.
TIME_UNSET
,
...
...
library/core/src/test/java/com/google/android/exoplayer2/source/DefaultMediaSourceFactoryTest.java
View file @
a6315597
...
@@ -264,11 +264,14 @@ public final class DefaultMediaSourceFactoryTest {
...
@@ -264,11 +264,14 @@ public final class DefaultMediaSourceFactoryTest {
MediaItem
mediaItem
=
MediaItem
mediaItem
=
new
MediaItem
.
Builder
()
new
MediaItem
.
Builder
()
.
setUri
(
URI_MEDIA
+
"/file.mp4"
)
.
setUri
(
URI_MEDIA
+
"/file.mp4"
)
.
setLiveTargetOffsetMs
(
10
)
.
setLiveConfiguration
(
.
setLiveMinOffsetMs
(
1111
)
new
MediaItem
.
LiveConfiguration
.
Builder
()
.
setLiveMinOffsetMs
(
3333
)
.
setTargetOffsetMs
(
10
)
.
setLiveMinPlaybackSpeed
(
20.0f
)
.
setMinOffsetMs
(
1111
)
.
setLiveMaxPlaybackSpeed
(
20.0f
)
.
setMinOffsetMs
(
3333
)
.
setMinPlaybackSpeed
(
20.0f
)
.
setMaxPlaybackSpeed
(
20.0f
)
.
build
())
.
build
();
.
build
();
MediaSource
mediaSource
=
defaultMediaSourceFactory
.
createMediaSource
(
mediaItem
);
MediaSource
mediaSource
=
defaultMediaSourceFactory
.
createMediaSource
(
mediaItem
);
...
...
library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java
View file @
a6315597
...
@@ -223,7 +223,8 @@ public final class DashMediaSource extends BaseMediaSource {
...
@@ -223,7 +223,8 @@ public final class DashMediaSource extends BaseMediaSource {
}
}
/**
/**
* @deprecated Use {@link MediaItem.Builder#setLiveTargetOffsetMs(long)} to override the
* @deprecated Use {@link MediaItem.Builder#setLiveConfiguration(MediaItem.LiveConfiguration)}
* and {@link MediaItem.LiveConfiguration.Builder#setTargetOffsetMs(long)} to override the
* manifest, or {@link #setFallbackTargetLiveOffsetMs(long)} to provide a fallback value.
* manifest, or {@link #setFallbackTargetLiveOffsetMs(long)} to provide a fallback value.
*/
*/
@Deprecated
@Deprecated
...
@@ -321,7 +322,12 @@ public final class DashMediaSource extends BaseMediaSource {
...
@@ -321,7 +322,12 @@ public final class DashMediaSource extends BaseMediaSource {
mediaItemBuilder
.
setTag
(
tag
);
mediaItemBuilder
.
setTag
(
tag
);
}
}
if
(
mediaItem
.
liveConfiguration
.
targetOffsetMs
==
C
.
TIME_UNSET
)
{
if
(
mediaItem
.
liveConfiguration
.
targetOffsetMs
==
C
.
TIME_UNSET
)
{
mediaItemBuilder
.
setLiveTargetOffsetMs
(
targetLiveOffsetOverrideMs
);
mediaItemBuilder
.
setLiveConfiguration
(
mediaItem
.
liveConfiguration
.
buildUpon
()
.
setTargetOffsetMs
(
targetLiveOffsetOverrideMs
)
.
build
());
}
}
if
(
mediaItem
.
playbackProperties
==
null
if
(
mediaItem
.
playbackProperties
==
null
||
mediaItem
.
playbackProperties
.
streamKeys
.
isEmpty
())
{
||
mediaItem
.
playbackProperties
.
streamKeys
.
isEmpty
())
{
...
@@ -393,7 +399,12 @@ public final class DashMediaSource extends BaseMediaSource {
...
@@ -393,7 +399,12 @@ public final class DashMediaSource extends BaseMediaSource {
builder
.
setStreamKeys
(
streamKeys
);
builder
.
setStreamKeys
(
streamKeys
);
}
}
if
(
needsTargetLiveOffset
)
{
if
(
needsTargetLiveOffset
)
{
builder
.
setLiveTargetOffsetMs
(
targetLiveOffsetOverrideMs
);
builder
.
setLiveConfiguration
(
mediaItem
.
liveConfiguration
.
buildUpon
()
.
setTargetOffsetMs
(
targetLiveOffsetOverrideMs
)
.
build
());
}
}
mediaItem
=
builder
.
build
();
mediaItem
=
builder
.
build
();
}
}
...
...
library/dash/src/test/java/com/google/android/exoplayer2/source/dash/DashMediaSourceTest.java
View file @
a6315597
...
@@ -187,7 +187,11 @@ public final class DashMediaSourceTest {
...
@@ -187,7 +187,11 @@ public final class DashMediaSourceTest {
@Test
@Test
public
void
factorySetFallbackTargetLiveOffsetMs_withMediaLiveTargetOffsetMs_usesMediaOffset
()
{
public
void
factorySetFallbackTargetLiveOffsetMs_withMediaLiveTargetOffsetMs_usesMediaOffset
()
{
MediaItem
mediaItem
=
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
setUri
(
Uri
.
EMPTY
).
setLiveTargetOffsetMs
(
2L
).
build
();
new
MediaItem
.
Builder
()
.
setUri
(
Uri
.
EMPTY
)
.
setLiveConfiguration
(
new
MediaItem
.
LiveConfiguration
.
Builder
().
setTargetOffsetMs
(
2L
).
build
())
.
build
();
DashMediaSource
.
Factory
factory
=
DashMediaSource
.
Factory
factory
=
new
DashMediaSource
.
Factory
(
new
FileDataSource
.
Factory
())
new
DashMediaSource
.
Factory
(
new
FileDataSource
.
Factory
())
.
setFallbackTargetLiveOffsetMs
(
1234L
);
.
setFallbackTargetLiveOffsetMs
(
1234L
);
...
@@ -200,7 +204,11 @@ public final class DashMediaSourceTest {
...
@@ -200,7 +204,11 @@ public final class DashMediaSourceTest {
@Test
@Test
public
void
factorySetLivePresentationDelayMs_withMediaLiveTargetOffset_usesMediaOffset
()
{
public
void
factorySetLivePresentationDelayMs_withMediaLiveTargetOffset_usesMediaOffset
()
{
MediaItem
mediaItem
=
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
setUri
(
Uri
.
EMPTY
).
setLiveTargetOffsetMs
(
2L
).
build
();
new
MediaItem
.
Builder
()
.
setUri
(
Uri
.
EMPTY
)
.
setLiveConfiguration
(
new
MediaItem
.
LiveConfiguration
.
Builder
().
setTargetOffsetMs
(
2L
).
build
())
.
build
();
DashMediaSource
.
Factory
factory
=
DashMediaSource
.
Factory
factory
=
new
DashMediaSource
.
Factory
(
new
FileDataSource
.
Factory
())
new
DashMediaSource
.
Factory
(
new
FileDataSource
.
Factory
())
.
setLivePresentationDelayMs
(
1234L
,
/* overridesManifest= */
true
);
.
setLivePresentationDelayMs
(
1234L
,
/* overridesManifest= */
true
);
...
@@ -290,11 +298,14 @@ public final class DashMediaSourceTest {
...
@@ -290,11 +298,14 @@ public final class DashMediaSourceTest {
MediaItem
mediaItem
=
MediaItem
mediaItem
=
new
MediaItem
.
Builder
()
new
MediaItem
.
Builder
()
.
setUri
(
Uri
.
EMPTY
)
.
setUri
(
Uri
.
EMPTY
)
.
setLiveTargetOffsetMs
(
876L
)
.
setLiveConfiguration
(
.
setLiveMinPlaybackSpeed
(
23
f
)
new
MediaItem
.
LiveConfiguration
.
Builder
()
.
setLiveMaxPlaybackSpeed
(
42
f
)
.
setTargetOffsetMs
(
876L
)
.
setLiveMinOffsetMs
(
500L
)
.
setMinPlaybackSpeed
(
23
f
)
.
setLiveMaxOffsetMs
(
20_000L
)
.
setMaxPlaybackSpeed
(
42
f
)
.
setMinOffsetMs
(
500L
)
.
setMaxOffsetMs
(
20_000L
)
.
build
())
.
build
();
.
build
();
DashMediaSource
mediaSource
=
DashMediaSource
mediaSource
=
new
DashMediaSource
.
Factory
(
new
DashMediaSource
.
Factory
(
...
@@ -336,11 +347,14 @@ public final class DashMediaSourceTest {
...
@@ -336,11 +347,14 @@ public final class DashMediaSourceTest {
MediaItem
mediaItem
=
MediaItem
mediaItem
=
new
MediaItem
.
Builder
()
new
MediaItem
.
Builder
()
.
setUri
(
Uri
.
EMPTY
)
.
setUri
(
Uri
.
EMPTY
)
.
setLiveTargetOffsetMs
(
876L
)
.
setLiveConfiguration
(
.
setLiveMinPlaybackSpeed
(
23
f
)
new
MediaItem
.
LiveConfiguration
.
Builder
()
.
setLiveMaxPlaybackSpeed
(
42
f
)
.
setTargetOffsetMs
(
876L
)
.
setLiveMinOffsetMs
(
200L
)
.
setMinPlaybackSpeed
(
23
f
)
.
setLiveMaxOffsetMs
(
999L
)
.
setMaxPlaybackSpeed
(
42
f
)
.
setMinOffsetMs
(
200L
)
.
setMaxOffsetMs
(
999L
)
.
build
())
.
build
();
.
build
();
DashMediaSource
mediaSource
=
DashMediaSource
mediaSource
=
new
DashMediaSource
.
Factory
(
new
DashMediaSource
.
Factory
(
...
@@ -385,11 +399,14 @@ public final class DashMediaSourceTest {
...
@@ -385,11 +399,14 @@ public final class DashMediaSourceTest {
MediaItem
mediaItem
=
MediaItem
mediaItem
=
new
MediaItem
.
Builder
()
new
MediaItem
.
Builder
()
.
setUri
(
Uri
.
EMPTY
)
.
setUri
(
Uri
.
EMPTY
)
.
setLiveTargetOffsetMs
(
876L
)
.
setLiveConfiguration
(
.
setLiveMinPlaybackSpeed
(
23
f
)
new
MediaItem
.
LiveConfiguration
.
Builder
()
.
setLiveMaxPlaybackSpeed
(
42
f
)
.
setTargetOffsetMs
(
876L
)
.
setLiveMinOffsetMs
(
100L
)
.
setMinPlaybackSpeed
(
23
f
)
.
setLiveMaxOffsetMs
(
999L
)
.
setMaxPlaybackSpeed
(
42
f
)
.
setMinOffsetMs
(
100L
)
.
setMaxOffsetMs
(
999L
)
.
build
())
.
build
();
.
build
();
DashMediaSource
mediaSource
=
DashMediaSource
mediaSource
=
new
DashMediaSource
.
Factory
(
new
DashMediaSource
.
Factory
(
...
...
library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaSource.java
View file @
a6315597
...
@@ -641,7 +641,7 @@ public final class HlsMediaSource extends BaseMediaSource
...
@@ -641,7 +641,7 @@ public final class HlsMediaSource extends BaseMediaSource
long
targetLiveOffsetMs
=
C
.
usToMs
(
targetLiveOffsetUs
);
long
targetLiveOffsetMs
=
C
.
usToMs
(
targetLiveOffsetUs
);
if
(
targetLiveOffsetMs
!=
liveConfiguration
.
targetOffsetMs
)
{
if
(
targetLiveOffsetMs
!=
liveConfiguration
.
targetOffsetMs
)
{
liveConfiguration
=
liveConfiguration
=
mediaItem
.
buildUpon
().
setLiveTargetOffsetMs
(
targetLiveOffsetMs
).
build
().
liveConfiguration
;
liveConfiguration
.
buildUpon
().
setTargetOffsetMs
(
targetLiveOffsetMs
).
build
()
;
}
}
}
}
...
...
library/hls/src/test/java/com/google/android/exoplayer2/source/hls/HlsMediaSourceTest.java
View file @
a6315597
...
@@ -364,7 +364,11 @@ public class HlsMediaSourceTest {
...
@@ -364,7 +364,11 @@ public class HlsMediaSourceTest {
SystemClock
.
setCurrentTimeMillis
(
Util
.
parseXsDateTime
(
"2020-01-01T00:00:17.0+00:00"
));
SystemClock
.
setCurrentTimeMillis
(
Util
.
parseXsDateTime
(
"2020-01-01T00:00:17.0+00:00"
));
HlsMediaSource
.
Factory
factory
=
createHlsMediaSourceFactory
(
playlistUri
,
playlist
);
HlsMediaSource
.
Factory
factory
=
createHlsMediaSourceFactory
(
playlistUri
,
playlist
);
MediaItem
mediaItem
=
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
setUri
(
playlistUri
).
setLiveTargetOffsetMs
(
3000
).
build
();
new
MediaItem
.
Builder
()
.
setUri
(
playlistUri
)
.
setLiveConfiguration
(
new
MediaItem
.
LiveConfiguration
.
Builder
().
setTargetOffsetMs
(
3000
).
build
())
.
build
();
HlsMediaSource
mediaSource
=
factory
.
createMediaSource
(
mediaItem
);
HlsMediaSource
mediaSource
=
factory
.
createMediaSource
(
mediaItem
);
Timeline
timeline
=
prepareAndWaitForTimeline
(
mediaSource
);
Timeline
timeline
=
prepareAndWaitForTimeline
(
mediaSource
);
...
@@ -439,7 +443,11 @@ public class HlsMediaSourceTest {
...
@@ -439,7 +443,11 @@ public class HlsMediaSourceTest {
SystemClock
.
setCurrentTimeMillis
(
Util
.
parseXsDateTime
(
"2020-01-01T00:00:17.0+00:00"
));
SystemClock
.
setCurrentTimeMillis
(
Util
.
parseXsDateTime
(
"2020-01-01T00:00:17.0+00:00"
));
HlsMediaSource
.
Factory
factory
=
createHlsMediaSourceFactory
(
playlistUri
,
playlist
);
HlsMediaSource
.
Factory
factory
=
createHlsMediaSourceFactory
(
playlistUri
,
playlist
);
MediaItem
mediaItem
=
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
setUri
(
playlistUri
).
setLiveTargetOffsetMs
(
3000
).
build
();
new
MediaItem
.
Builder
()
.
setUri
(
playlistUri
)
.
setLiveConfiguration
(
new
MediaItem
.
LiveConfiguration
.
Builder
().
setTargetOffsetMs
(
3000
).
build
())
.
build
();
HlsMediaSource
mediaSource
=
factory
.
createMediaSource
(
mediaItem
);
HlsMediaSource
mediaSource
=
factory
.
createMediaSource
(
mediaItem
);
Timeline
timeline
=
prepareAndWaitForTimeline
(
mediaSource
);
Timeline
timeline
=
prepareAndWaitForTimeline
(
mediaSource
);
...
@@ -469,7 +477,11 @@ public class HlsMediaSourceTest {
...
@@ -469,7 +477,11 @@ public class HlsMediaSourceTest {
SystemClock
.
setCurrentTimeMillis
(
Util
.
parseXsDateTime
(
"2020-01-01T00:00:05.0+00:00"
));
SystemClock
.
setCurrentTimeMillis
(
Util
.
parseXsDateTime
(
"2020-01-01T00:00:05.0+00:00"
));
HlsMediaSource
.
Factory
factory
=
createHlsMediaSourceFactory
(
playlistUri
,
playlist
);
HlsMediaSource
.
Factory
factory
=
createHlsMediaSourceFactory
(
playlistUri
,
playlist
);
MediaItem
mediaItem
=
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
setUri
(
playlistUri
).
setLiveTargetOffsetMs
(
1000
).
build
();
new
MediaItem
.
Builder
()
.
setUri
(
playlistUri
)
.
setLiveConfiguration
(
new
MediaItem
.
LiveConfiguration
.
Builder
().
setTargetOffsetMs
(
1000
).
build
())
.
build
();
HlsMediaSource
mediaSource
=
factory
.
createMediaSource
(
mediaItem
);
HlsMediaSource
mediaSource
=
factory
.
createMediaSource
(
mediaItem
);
Timeline
timeline
=
prepareAndWaitForTimeline
(
mediaSource
);
Timeline
timeline
=
prepareAndWaitForTimeline
(
mediaSource
);
...
@@ -502,7 +514,11 @@ public class HlsMediaSourceTest {
...
@@ -502,7 +514,11 @@ public class HlsMediaSourceTest {
SystemClock
.
setCurrentTimeMillis
(
Util
.
parseXsDateTime
(
"2020-01-01T00:00:09.0+00:00"
));
SystemClock
.
setCurrentTimeMillis
(
Util
.
parseXsDateTime
(
"2020-01-01T00:00:09.0+00:00"
));
HlsMediaSource
.
Factory
factory
=
createHlsMediaSourceFactory
(
playlistUri
,
playlist
);
HlsMediaSource
.
Factory
factory
=
createHlsMediaSourceFactory
(
playlistUri
,
playlist
);
MediaItem
mediaItem
=
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
setUri
(
playlistUri
).
setLiveTargetOffsetMs
(
20_000
).
build
();
new
MediaItem
.
Builder
()
.
setUri
(
playlistUri
)
.
setLiveConfiguration
(
new
MediaItem
.
LiveConfiguration
.
Builder
().
setTargetOffsetMs
(
20_000
).
build
())
.
build
();
HlsMediaSource
mediaSource
=
factory
.
createMediaSource
(
mediaItem
);
HlsMediaSource
mediaSource
=
factory
.
createMediaSource
(
mediaItem
);
Timeline
timeline
=
prepareAndWaitForTimeline
(
mediaSource
);
Timeline
timeline
=
prepareAndWaitForTimeline
(
mediaSource
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment