Skip to content

ClippedMediaSource ends sooner than expected when using REPEAT_MODE_ALL or ConcatenatingMediaSource #4583

@MateusZitelli

Description

@MateusZitelli

Issue description

Clipped video playback ends sooner than expected when repeat mode is Player.REPEAT_MODE_ALL or when it is combined with other clips using ConcatenatingMediaSource.

Reproduction steps

Setup a simple ExoPlayer instance:

val trackSelector = DefaultTrackSelector()
val renderersFactory = DefaultRenderersFactory(context)
val loadControl = DefaultLoadControl()
val player = ExoPlayerFactory.newSimpleInstance(renderersFactory, trackSelector, loadControl)
player.repeatMode = Player.REPEAT_MODE_ALL
val extractorMediaSourceFactory = ExtractorMediaSource.Factory(dataSourceFactory)

val startMs = 300
val endMs = 1000
val path = "/sdcard/Movies/probe-video.mp4"

val videoUri = Uri.parse(path)
val extractorMediaSource = extractorMediaSourceFactory.createMediaSource(videoUri)
val clippingMediaSource = ClippingMediaSource(
    extractorMediaSource,
    startMs * 1000,
    endMs * 1000)

val concatenatingMediaSource = ConcatenatingMediaSource()
concatenatingMediaSource.addMediaSources(listOf(mediaSource, mediaSource))

Logging player.currentPosition

Observable
    .interval(10, TimeUnit.MILLISECONDS)
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe { Log.d("PlayerPresenter", "${player.currentPosition}") }
With Player.REPEAT_MODE_OFF or player.prepare(clippingMediaSource)

PlayerPresenter: 0
PlayerPresenter: 14
PlayerPresenter: 14
PlayerPresenter: 14
PlayerPresenter: 14
...
PlayerPresenter: 686
PlayerPresenter: 706
PlayerPresenter: 706

With Player.REPEAT_MODE_ALL or player.prepare(concatenatingMediaSource)

PlayerPresenter: 14
PlayerPresenter: 14
...
PlayerPresenter: 400
PlayerPresenter: 400
PlayerPresenter: 400
PlayerPresenter: -300
PlayerPresenter: -300
PlayerPresenter: -300
PlayerPresenter: -300

Link to test content

I was able to reproduce this issue with any local mp4.

Version of ExoPlayer being used

2.8.2

Device(s) and version(s) of Android being used

  • Essential phone w/ Android 8.1
  • Samsung Note 8 w/ Android 7.1
    However it doesn't seem to be a device specific issue.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions