mirror of
https://github.com/advplyr/audiobookshelf-app.git
synced 2025-07-23 12:16:10 +02:00
Change:Audio stream buffer times #63
This commit is contained in:
parent
0fcec4b861
commit
1a7f90c93b
3 changed files with 25 additions and 1 deletions
|
@ -82,8 +82,10 @@ class MyNativeAudio : Plugin() {
|
|||
fun getCurrentTime(call: PluginCall) {
|
||||
Handler(Looper.getMainLooper()).post() {
|
||||
var currentTime = playerNotificationService.getCurrentTime()
|
||||
var bufferedTime = playerNotificationService.getBufferedTime()
|
||||
val ret = JSObject()
|
||||
ret.put("value", currentTime)
|
||||
ret.put("bufferedTime", bufferedTime)
|
||||
call.resolve(ret)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -243,7 +243,15 @@ class PlayerNotificationService : MediaBrowserServiceCompat() {
|
|||
ctx = this
|
||||
|
||||
// Initialize player
|
||||
var customLoadControl:LoadControl = DefaultLoadControl.Builder().setBufferDurationsMs(
|
||||
1000 * 20, // 20s min buffer
|
||||
1000 * 45, // 45s max buffer
|
||||
1000 * 5, // 5s playback start
|
||||
1000 * 20 // 20s playback rebuffer
|
||||
).build()
|
||||
|
||||
var simpleExoPlayerBuilder = SimpleExoPlayer.Builder(this)
|
||||
simpleExoPlayerBuilder.setLoadControl(customLoadControl)
|
||||
simpleExoPlayerBuilder.setSeekBackIncrementMs(10000)
|
||||
simpleExoPlayerBuilder.setSeekForwardIncrementMs(10000)
|
||||
mPlayer = simpleExoPlayerBuilder.build()
|
||||
|
@ -694,6 +702,10 @@ class PlayerNotificationService : MediaBrowserServiceCompat() {
|
|||
return currentPlayer.currentPosition
|
||||
}
|
||||
|
||||
fun getBufferedTime() : Long {
|
||||
return currentPlayer.bufferedPosition
|
||||
}
|
||||
|
||||
fun getTheLastPauseTime() : Long {
|
||||
return lastPauseTime
|
||||
}
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
<div class="w-full">
|
||||
<div class="h-1 w-full bg-gray-500 bg-opacity-50 relative">
|
||||
<div ref="totalReadyTrack" class="h-full bg-gray-600 absolute top-0 left-0 pointer-events-none" />
|
||||
<div ref="totalBufferedTrack" class="h-full bg-gray-500 absolute top-0 left-0 pointer-events-none" />
|
||||
<div ref="totalPlayedTrack" class="h-full bg-gray-200 absolute top-0 left-0 pointer-events-none" />
|
||||
</div>
|
||||
</div>
|
||||
|
@ -71,6 +72,7 @@
|
|||
<div id="playerTrack" class="absolute bottom-0 left-0 w-full px-3">
|
||||
<div ref="track" class="h-2 w-full bg-gray-500 bg-opacity-50 relative" :class="loading ? 'animate-pulse' : ''" @click="clickTrack">
|
||||
<div ref="readyTrack" class="h-full bg-gray-600 absolute top-0 left-0 pointer-events-none" />
|
||||
<div ref="bufferedTrack" class="h-full bg-gray-500 absolute top-0 left-0 pointer-events-none" />
|
||||
<div ref="playedTrack" class="h-full bg-gray-200 absolute top-0 left-0 pointer-events-none" />
|
||||
</div>
|
||||
<div class="flex pt-0.5">
|
||||
|
@ -114,6 +116,7 @@ export default {
|
|||
totalDuration: 0,
|
||||
currentPlaybackRate: 1,
|
||||
currentTime: 0,
|
||||
bufferedTime: 0,
|
||||
isResetting: false,
|
||||
initObject: null,
|
||||
streamId: null,
|
||||
|
@ -430,19 +433,25 @@ export default {
|
|||
updateTrack() {
|
||||
var percentDone = this.currentTime / this.totalDuration
|
||||
var totalPercentDone = percentDone
|
||||
var bufferedPercent = this.bufferedTime / this.totalDuration
|
||||
var totalBufferedPercent = bufferedPercent
|
||||
|
||||
if (this.useChapterTrack && this.currentChapter) {
|
||||
var currChapTime = this.currentTime - this.currentChapter.start
|
||||
percentDone = currChapTime / this.currentChapterDuration
|
||||
bufferedPercent = (this.bufferedTime - this.currentChapter.start) / this.currentChapterDuration
|
||||
}
|
||||
var ptWidth = Math.round(percentDone * this.trackWidth)
|
||||
if (this.playedTrackWidth === ptWidth) {
|
||||
return
|
||||
}
|
||||
this.$refs.playedTrack.style.width = ptWidth + 'px'
|
||||
this.$refs.bufferedTrack.style.width = Math.round(bufferedPercent * this.trackWidth) + 'px'
|
||||
this.playedTrackWidth = ptWidth
|
||||
|
||||
if (this.useChapterTrack) {
|
||||
this.$refs.totalPlayedTrack.style.width = Math.round(totalPercentDone * this.trackWidth) + 'px'
|
||||
this.$refs.totalBufferedTrack.style.width = Math.round(totalBufferedPercent * this.trackWidth) + 'px'
|
||||
}
|
||||
},
|
||||
seek(time) {
|
||||
|
@ -511,6 +520,7 @@ export default {
|
|||
},
|
||||
async set(audiobookStreamData, stream, fromAppDestroy) {
|
||||
this.isResetting = false
|
||||
this.bufferedTime = 0
|
||||
this.streamId = stream ? stream.id : null
|
||||
this.audiobookId = audiobookStreamData.audiobookId
|
||||
this.initObject = { ...audiobookStreamData }
|
||||
|
@ -601,7 +611,7 @@ export default {
|
|||
this.playInterval = setInterval(async () => {
|
||||
var data = await MyNativeAudio.getCurrentTime()
|
||||
this.currentTime = Number((data.value / 1000).toFixed(2))
|
||||
|
||||
this.bufferedTime = Number((data.bufferedTime / 1000).toFixed(2))
|
||||
this.timeupdate()
|
||||
}, 1000)
|
||||
},
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue