Merge pull request #817 from yattee/fix-subtitles

improved subtitle handling
This commit is contained in:
Arkadiusz Fal
2024-11-08 15:01:56 +01:00
committed by GitHub
3 changed files with 65 additions and 28 deletions

View File

@@ -23,15 +23,14 @@ final class MPVBackend: PlayerBackend {
var stream: Stream?
var video: Video?
var captions: Captions? { didSet {
guard let captions else {
if client?.areSubtitlesAdded == true {
client?.removeSubs()
var captions: Captions? {
didSet {
Task {
await handleCaptionsChange()
}
return
}
addSubTrack(captions.url)
}}
}
var currentTime: CMTime?
var loadedVideo = false
@@ -622,10 +621,14 @@ final class MPVBackend: PlayerBackend {
}
func addSubTrack(_ url: URL) {
if client?.areSubtitlesAdded == true {
client?.removeSubs()
Task {
if let areSubtitlesAdded = client?.areSubtitlesAdded {
if await areSubtitlesAdded() {
await client?.removeSubs()
}
}
await client?.addSubTrack(url)
}
client?.addSubTrack(url)
}
func setVideoToAuto() {
@@ -689,6 +692,17 @@ final class MPVBackend: PlayerBackend {
}
}
private func handleCaptionsChange() async {
guard let captions else {
if let isSubtitlesAdded = client?.areSubtitlesAdded, await isSubtitlesAdded() {
await client?.removeSubs()
}
return
}
addSubTrack(captions.url)
}
private func handlePropertyChange(_ name: String, _ property: mpv_event_property) {
switch name {
case "pause":