使用 ConcatenatingMediaSource 时,Exoplayer 在播放列表中有一点差距
Exoplayer a little gap in playlist when using ConcatenatingMediaSource
我正在使用 ConcatenatingMediaSource 为我的 ExoPlayer 制作 hls urls 播放列表。
用本地文件播放媒体源时,没有间隙。
但是,当通过 hls url 播放媒体源时,它在转换时明显显示间隙(第一个视频到第二个视频)
我希望我的媒体源在 ConcatenatingMediaSource 中顺利传输。
我怎样才能做到这一点?
请指导我。
下面是我的初始化代码。
val playerView = findViewById<PlayerView>(R.id.playerView)
val concatenatedSource = ConcatenatingMediaSource()
val trackSelector = DefaultTrackSelector(mContext!!)
trackSelector.parameters = trackSelector.buildUponParameters().build()
val dataSourceFactory = DefaultHttpDataSource.Factory()
val hlsMediaSource: HlsMediaSource = HlsMediaSource.Factory(dataSourceFactory)
.setAllowChunklessPreparation(true)
.createMediaSource(MediaItem.fromUri("https://multiplatform-f.akamaihd.net/i/multi/april11/sintel/sintel-hd_,512x288_450_b,640x360_700_b,768x432_1000_b,1024x576_1400_m,.mp4.csmil/master.m3u8"))
concatenatedSource.addMediaSource(hlsMediaSource)
val player = ExoPlayer.Builder(mContext)
.setTrackSelector(trackSelector)
.build()
player.setMediaSource(concatenatedSource)
player.addAnalyticsListener(EventLogger(trackSelector))
player.addListener(object : Player.Listener {
override fun onPlayerError(error: PlaybackException) {
super.onPlayerError(error)
}
})
playerView?.player = player
playerView?.player?.prepare()
playerView?.player?.playWhenReady = true
对于遇到此类问题的人,您应该在构建 MediaItem 对象时尝试使用 CacheDataSource。这解决了我的问题。谢谢
我正在使用 ConcatenatingMediaSource 为我的 ExoPlayer 制作 hls urls 播放列表。
用本地文件播放媒体源时,没有间隙。
但是,当通过 hls url 播放媒体源时,它在转换时明显显示间隙(第一个视频到第二个视频)
我希望我的媒体源在 ConcatenatingMediaSource 中顺利传输。
我怎样才能做到这一点?
请指导我。
下面是我的初始化代码。
val playerView = findViewById<PlayerView>(R.id.playerView)
val concatenatedSource = ConcatenatingMediaSource()
val trackSelector = DefaultTrackSelector(mContext!!)
trackSelector.parameters = trackSelector.buildUponParameters().build()
val dataSourceFactory = DefaultHttpDataSource.Factory()
val hlsMediaSource: HlsMediaSource = HlsMediaSource.Factory(dataSourceFactory)
.setAllowChunklessPreparation(true)
.createMediaSource(MediaItem.fromUri("https://multiplatform-f.akamaihd.net/i/multi/april11/sintel/sintel-hd_,512x288_450_b,640x360_700_b,768x432_1000_b,1024x576_1400_m,.mp4.csmil/master.m3u8"))
concatenatedSource.addMediaSource(hlsMediaSource)
val player = ExoPlayer.Builder(mContext)
.setTrackSelector(trackSelector)
.build()
player.setMediaSource(concatenatedSource)
player.addAnalyticsListener(EventLogger(trackSelector))
player.addListener(object : Player.Listener {
override fun onPlayerError(error: PlaybackException) {
super.onPlayerError(error)
}
})
playerView?.player = player
playerView?.player?.prepare()
playerView?.player?.playWhenReady = true
对于遇到此类问题的人,您应该在构建 MediaItem 对象时尝试使用 CacheDataSource。这解决了我的问题。谢谢