diff --git a/app/src/main/java/dev/jdtech/jellyfin/mpv/MPVPlayer.kt b/app/src/main/java/dev/jdtech/jellyfin/mpv/MPVPlayer.kt index b18568eb..eda0f7e5 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/mpv/MPVPlayer.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/mpv/MPVPlayer.kt @@ -39,7 +39,8 @@ import java.util.concurrent.CopyOnWriteArraySet @Suppress("SpellCheckingInspection") class MPVPlayer( context: Context, - requestAudioFocus: Boolean + requestAudioFocus: Boolean, + preferredLanguages: Map ) : BasePlayer(), MPVLib.EventObserver, AudioManager.OnAudioFocusChangeListener { private val audioManager: AudioManager by lazy { context.getSystemService()!! } @@ -81,6 +82,17 @@ class MPVPlayer( MPVLib.setOptionString("sub-font-provider", "none") MPVLib.setOptionString("ytdl", "no") + for (preferredLanguage in preferredLanguages) { + when (preferredLanguage.key) { + TrackType.AUDIO -> { + MPVLib.setOptionString("alang", preferredLanguage.value) + } + TrackType.SUBTITLE -> { + MPVLib.setOptionString("slang", preferredLanguage.value) + } + } + } + MPVLib.addObserver(this) // Observe properties diff --git a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/PlayerActivityViewModel.kt b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/PlayerActivityViewModel.kt index c86b787a..7509df93 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/PlayerActivityViewModel.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/PlayerActivityViewModel.kt @@ -51,16 +51,20 @@ constructor( init { val useMpv = sp.getBoolean("mpv_player", false) + val preferredAudioLanguage = sp.getString("audio_language", null) ?: "" + val preferredSubtitleLanguage = sp.getString("subtitle_language", null) ?: "" + if (useMpv) { - player = MPVPlayer(application, false) + val preferredLanguages = mapOf(TrackType.AUDIO to preferredAudioLanguage, TrackType.SUBTITLE to preferredSubtitleLanguage) + player = MPVPlayer(application, false, preferredLanguages) } else { val renderersFactory = DefaultRenderersFactory(application).setExtensionRendererMode(DefaultRenderersFactory.EXTENSION_RENDERER_MODE_ON) trackSelector.setParameters( trackSelector.buildUponParameters() .setTunnelingEnabled(true) - .setPreferredAudioLanguage(sp.getString("audio_language", null)) - .setPreferredTextLanguage(sp.getString("subtitle_language", null)) + .setPreferredAudioLanguage(preferredAudioLanguage) + .setPreferredTextLanguage(preferredSubtitleLanguage) ) player = SimpleExoPlayer.Builder(application, renderersFactory) .setTrackSelector(trackSelector) diff --git a/app/src/main/res/values/languages.xml b/app/src/main/res/values/languages.xml index 0a4c73bd..306f3e9c 100644 --- a/app/src/main/res/values/languages.xml +++ b/app/src/main/res/values/languages.xml @@ -190,189 +190,189 @@ null - ab - aa - af - ak - sq - am - ar - an - hy - as - av - ae - ay - az - bm - ba - eu - be - bn - bh - bi - nb - bs - br - bg - my - ca - km - ch - ce - ny - zh - cu - cv - kw - co - cr - hr - cs - da - dv - nl - dz - en - eo - et - ee - fo - fj - fi - fr - ff - gd - gl - lg - ka - de - el - gn - gu - ht - ha - he - hz - hi - ho - hu - is - io - ig - id - ia - ie - iu - ik - ga - it - ja - jv - kl - kn - kr - ks - kk - ki - rw - ky - kv - kg - ko - kj - ku - lo - la - lv - li - ln - lt - lu - lb - mk - mg - ms - ml - mt - gv - mi - mr - mh - mn - na - nv - nd - nr - ng - ne - se - no - nn - oc - oj - or - om - os - pi - pa - fa - pl - pt - ps - qu - ro - rm - rn - ru - sm - sg - sa - sc - sr - sn - ii - sd - si - sk - sl - so - st - es - su - sw - ss - sv - tl - ty - tg - ta - tt - te - th - bo - ti - to - ts - tn - tr - tk - tw - ug - uk - ur - uz - ve - vi - vo - wa - cy - fy - wo - xh - yi - yo - za - zu + abk + aar + afr + aka + sqi + amh + ara + arg + hye + asm + ava + ave + aym + aze + bam + bak + eus + bel + ben + bih + bis + nob + bos + bre + bul + bur + cat + khm + cha + che + nya + chi + chu + chv + cor + cos + cre + hrv + cze + dan + div + dut + dzo + eng + epo + est + ewe + fao + fij + fin + fre + ful + gla + glg + lug + geo + ger + gre + grn + guj + hat + hau + heb + her + hin + hmo + hun + ice + ido + ibo + ind + ina + ile + iku + ipk + gle + ita + jpn + jav + kal + kan + kau + kas + kaz + kik + kin + kir + kom + kon + kor + kua + kur + lao + lat + lav + lim + lin + lit + lub + ltz + mac + mlg + may + mal + mlt + glv + mao + mar + mah + mon + nau + nav + nde + nbl + ndo + nep + sme + nor + nno + oci + oji + ori + orm + oss + pli + pan + per + pol + por + pus + que + rum + roh + run + rus + smo + sag + san + srd + srp + sna + iii + snd + sin + slo + slv + som + sot + spa + sun + swa + ssw + swe + tgl + tah + tgk + tam + tat + tel + tha + tib + tir + ton + tso + tsn + tur + tuk + twi + uig + ukr + urd + uzb + ven + vie + vol + wln + wel + fry + wol + xho + yid + yor + zha + zul \ No newline at end of file