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

View File

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

View File

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