Merge pull request #924 from Bnyro/master

improve live video handling
This commit is contained in:
Bnyro 2022-07-30 15:57:02 +02:00 committed by GitHub
commit 6684fad842
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 19 additions and 16 deletions

View File

@ -770,12 +770,6 @@ class PlayerFragment : Fragment() {
// save related streams for autoplay
relatedStreams = response.relatedStreams
// duration that's not greater than 0 indicates that the video is live
if (!(response.duration!! > 0)) {
isLive = true
handleLiveVideo()
}
runOnUiThread {
// set media sources for the player
setResolutionAndSubtitles(response)
@ -800,21 +794,14 @@ class PlayerFragment : Fragment() {
run()
}
private fun handleLiveVideo() {
playerBinding.exoTime.visibility = View.GONE
playerBinding.liveLL.visibility = View.VISIBLE
refreshLiveStatus()
}
private fun refreshLiveStatus() {
// switch back to normal speed when on the end of live stream
Log.e(exoPlayer.duration.toString(), exoPlayer.currentPosition.toString())
if (isLive && (exoPlayer.duration - exoPlayer.currentPosition < 10000)) {
if (exoPlayer.duration - exoPlayer.currentPosition < 7000) {
exoPlayer.setPlaybackSpeed(1F)
playerBinding.speedText.text = "1x"
playerBinding.liveSeparator.visibility = View.GONE
playerBinding.liveDiff.text = ""
} else if (isLive) {
} else {
Log.e(TAG, "changing the time")
// live stream but not watching at the end/live position
playerBinding.liveSeparator.visibility = View.VISIBLE
@ -977,6 +964,15 @@ class PlayerFragment : Fragment() {
}
}
private fun handleLiveVideo() {
playerBinding.exoTime.visibility = View.GONE
playerBinding.liveLL.visibility = View.VISIBLE
playerBinding.liveIndicator.setOnClickListener {
exoPlayer.seekTo(exoPlayer.duration - 1000)
}
refreshLiveStatus()
}
private fun initializePlayerView(response: Streams) {
binding.apply {
playerViewsInfo.text =
@ -994,6 +990,12 @@ class PlayerFragment : Fragment() {
playerDescription.text = response.description
}
// duration that's not greater than 0 indicates that the video is live
if (!(response.duration!! > 0)) {
isLive = true
handleLiveVideo()
}
playerBinding.exoTitle.text = response.title
if (seekBarPreview) enableSeekbarPreview()

View File

@ -49,7 +49,7 @@
android:background="@android:color/transparent"
android:hint="@string/search_hint"
android:imeOptions="actionSearch"
android:inputType="text"
android:inputType="textFilter|textNoSuggestions"
android:maxLines="1"
android:padding="12dp" />

View File

@ -122,6 +122,7 @@
android:layout_gravity="end"
android:drawablePadding="5dp"
android:paddingHorizontal="10dp"
android:layout_marginBottom="5dp"
android:text="@string/most_recent"
android:textSize="16sp"
app:drawableEndCompat="@drawable/ic_arrow_downward" />