forked from recloudstream/cloudstream
more video cache settings
This commit is contained in:
parent
fb78871a94
commit
5b02a37fc1
10 changed files with 170 additions and 31 deletions
|
@ -339,14 +339,21 @@ abstract class AbstractPlayerFragment(
|
|||
SubtitlesFragment.applyStyleEvent += ::onSubStyleChanged
|
||||
|
||||
try {
|
||||
context?.let {
|
||||
context?.let { ctx ->
|
||||
val settingsManager = PreferenceManager.getDefaultSharedPreferences(
|
||||
it
|
||||
ctx
|
||||
)
|
||||
val currentPrefSize =
|
||||
settingsManager.getInt(getString(R.string.video_cache_key), 300)
|
||||
|
||||
player.cacheSize = currentPrefSize * 1024L * 1024L
|
||||
val currentPrefCacheSize =
|
||||
settingsManager.getInt(getString(R.string.video_buffer_size_key), 0)
|
||||
val currentPrefDiskSize =
|
||||
settingsManager.getInt(getString(R.string.video_buffer_disk_key), 0)
|
||||
val currentPrefBufferSec =
|
||||
settingsManager.getInt(getString(R.string.video_buffer_length_key), 0)
|
||||
|
||||
player.cacheSize = currentPrefCacheSize * 1024L * 1024L
|
||||
player.simpleCacheSize = currentPrefDiskSize * 1024L * 1024L
|
||||
player.videoBufferMs = currentPrefBufferSec * 1000L
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
logError(e)
|
||||
|
|
|
@ -39,8 +39,9 @@ const val TAG = "CS3ExoPlayer"
|
|||
class CS3IPlayer : IPlayer {
|
||||
private var isPlaying = false
|
||||
private var exoPlayer: ExoPlayer? = null
|
||||
var cacheSize = 300L * 1024L * 1024L // 300 mb
|
||||
private val simpleCacheSize : Long get() = cacheSize / 2 // idk chosen at random kinda
|
||||
var cacheSize = 0L
|
||||
var simpleCacheSize = 0L
|
||||
var videoBufferMs = 0L
|
||||
|
||||
private val seekActionTime = 30000L
|
||||
|
||||
|
@ -423,6 +424,7 @@ class CS3IPlayer : IPlayer {
|
|||
playBackSpeed: Float,
|
||||
subtitleOffset: Long,
|
||||
cacheSize: Long,
|
||||
videoBufferMs: Long,
|
||||
playWhenReady: Boolean = true,
|
||||
cacheFactory: CacheDataSource.Factory? = null,
|
||||
trackSelector: TrackSelector? = null,
|
||||
|
@ -460,10 +462,11 @@ class CS3IPlayer : IPlayer {
|
|||
)
|
||||
.setBufferDurationsMs(
|
||||
DefaultLoadControl.DEFAULT_MIN_BUFFER_MS,
|
||||
maxOf(
|
||||
DefaultLoadControl.DEFAULT_MAX_BUFFER_MS,
|
||||
((cacheSize * 75L) / 32768L).toInt()
|
||||
), // 500mb = 20min
|
||||
if(videoBufferMs <= 0) {
|
||||
DefaultLoadControl.DEFAULT_MAX_BUFFER_MS
|
||||
} else {
|
||||
videoBufferMs.toInt()
|
||||
},
|
||||
DefaultLoadControl.DEFAULT_BUFFER_FOR_PLAYBACK_MS,
|
||||
DefaultLoadControl.DEFAULT_BUFFER_FOR_PLAYBACK_AFTER_REBUFFER_MS
|
||||
).build()
|
||||
|
@ -574,6 +577,7 @@ class CS3IPlayer : IPlayer {
|
|||
playbackPosition,
|
||||
playBackSpeed,
|
||||
cacheSize = cacheSize,
|
||||
videoBufferMs = videoBufferMs,
|
||||
playWhenReady = isPlaying, // this keep the current state of the player
|
||||
cacheFactory = cacheFactory,
|
||||
subtitleOffset = currentSubtitleOffset
|
||||
|
|
|
@ -209,21 +209,61 @@ class SettingsFragment : PreferenceFragmentCompat() {
|
|||
setPreferencesFromResource(R.xml.settings, rootKey)
|
||||
val settingsManager = PreferenceManager.getDefaultSharedPreferences(requireContext())
|
||||
|
||||
getPref(R.string.video_cache_key)?.setOnPreferenceClickListener {
|
||||
val prefNames = resources.getStringArray(R.array.video_cache_size_names)
|
||||
val prefValues = resources.getIntArray(R.array.video_cache_size_values)
|
||||
getPref(R.string.video_buffer_length_key)?.setOnPreferenceClickListener {
|
||||
val prefNames = resources.getStringArray(R.array.video_buffer_length_names)
|
||||
val prefValues = resources.getIntArray(R.array.video_buffer_length_values)
|
||||
|
||||
val currentPrefSize =
|
||||
settingsManager.getInt(getString(R.string.video_cache_key), 300)
|
||||
settingsManager.getInt(getString(R.string.video_buffer_length_key), 0)
|
||||
|
||||
activity?.showBottomDialog(
|
||||
activity?.showDialog(
|
||||
prefNames.toList(),
|
||||
prefValues.indexOf(currentPrefSize),
|
||||
getString(R.string.video_cache_settings),
|
||||
getString(R.string.video_buffer_length_settings),
|
||||
true,
|
||||
{}) {
|
||||
settingsManager.edit()
|
||||
.putInt(getString(R.string.video_cache_key), prefValues[it])
|
||||
.putInt(getString(R.string.video_buffer_length_key), prefValues[it])
|
||||
.apply()
|
||||
}
|
||||
return@setOnPreferenceClickListener true
|
||||
}
|
||||
|
||||
getPref(R.string.video_buffer_size_key)?.setOnPreferenceClickListener {
|
||||
val prefNames = resources.getStringArray(R.array.video_buffer_size_names)
|
||||
val prefValues = resources.getIntArray(R.array.video_buffer_size_values)
|
||||
|
||||
val currentPrefSize =
|
||||
settingsManager.getInt(getString(R.string.video_buffer_size_key), 0)
|
||||
|
||||
activity?.showDialog(
|
||||
prefNames.toList(),
|
||||
prefValues.indexOf(currentPrefSize),
|
||||
getString(R.string.video_buffer_size_settings),
|
||||
true,
|
||||
{}) {
|
||||
settingsManager.edit()
|
||||
.putInt(getString(R.string.video_buffer_size_key), prefValues[it])
|
||||
.apply()
|
||||
}
|
||||
return@setOnPreferenceClickListener true
|
||||
}
|
||||
|
||||
getPref(R.string.video_buffer_disk_key)?.setOnPreferenceClickListener {
|
||||
val prefNames = resources.getStringArray(R.array.video_buffer_size_names)
|
||||
val prefValues = resources.getIntArray(R.array.video_buffer_size_values)
|
||||
|
||||
val currentPrefSize =
|
||||
settingsManager.getInt(getString(R.string.video_buffer_disk_key), 0)
|
||||
|
||||
activity?.showDialog(
|
||||
prefNames.toList(),
|
||||
prefValues.indexOf(currentPrefSize),
|
||||
getString(R.string.video_buffer_disk_settings),
|
||||
true,
|
||||
{}) {
|
||||
settingsManager.edit()
|
||||
.putInt(getString(R.string.video_buffer_disk_key), prefValues[it])
|
||||
.apply()
|
||||
}
|
||||
return@setOnPreferenceClickListener true
|
||||
|
|
|
@ -232,7 +232,7 @@
|
|||
<string name="dont_show_again">لا تظهر مرة أخرى</string>
|
||||
<string name="update">تحديث</string>
|
||||
<string name="watch_quality_pref">جودة المشاهدة المفضلة</string>
|
||||
<string name="video_cache_settings">حجم ذاكرة التخزين المؤقت للفيديو</string>
|
||||
<string name="video_buffer_size_settings">حجم ذاكرة التخزين المؤقت للفيديو</string>
|
||||
<string name="dns_pref">DNS فوق HTTPS</string>
|
||||
<string name="dns_pref_summary">مفيد لتجاوز كتل مزود خدمة الإنترنت</string>
|
||||
|
||||
|
|
|
@ -186,7 +186,7 @@
|
|||
\n%s -> %s</string>
|
||||
<string name="filler" formatted="true">Épisode spécial</string>
|
||||
<string name="watch_quality_pref">Qualité de visionnage préférée</string>
|
||||
<string name="video_cache_settings">Taille de la mémoire cache</string>
|
||||
<string name="video_buffer_size_settings">Taille de la mémoire cache</string>
|
||||
<string name="resize_fill">Étendre</string>
|
||||
<string name="legal_notice">Non-responsabilité</string>
|
||||
<string name="primary_color_settings">Couleur principale</string>
|
||||
|
|
|
@ -269,7 +269,7 @@
|
|||
<string name="dont_show_again">Non mostrare di nuovo</string>
|
||||
<string name="update">Aggiorna</string>
|
||||
<string name="watch_quality_pref">Risoluzione preferita</string>
|
||||
<string name="video_cache_settings">Dimensione cache video</string>
|
||||
<string name="video_buffer_size_settings">Dimensione cache video</string>
|
||||
<string name="dns_pref">DNS over HTTPS</string>
|
||||
<string name="dns_pref_summary">Utile per bypassare i blocchi ISP</string>
|
||||
|
||||
|
|
|
@ -232,7 +232,7 @@
|
|||
<string name="dont_show_again">Không hiển thị lại</string>
|
||||
<string name="update">Cập nhật</string>
|
||||
<string name="watch_quality_pref">Tự động chọn chất lượng phim</string>
|
||||
<string name="video_cache_settings">Kích thước video cache</string>
|
||||
<string name="video_buffer_size_settings">Kích thước video cache</string>
|
||||
<string name="dns_pref_summary">Rất hữu ích để bỏ chặn ISP</string>
|
||||
|
||||
<string name="download_path_pref">Đường dẫn tải xuống</string>
|
||||
|
|
|
@ -56,20 +56,88 @@
|
|||
<item>1</item>
|
||||
<item>2</item>
|
||||
</array>
|
||||
<array name="video_cache_size_names">
|
||||
<item>@string/none</item>
|
||||
|
||||
<array name="video_buffer_length_names">
|
||||
<item>@string/automatic</item>
|
||||
<item>1min</item>
|
||||
<item>1min 30s</item>
|
||||
<item>2min</item>
|
||||
<item>2min 30s</item>
|
||||
<item>3min</item>
|
||||
<item>3min 30s</item>
|
||||
<item>4min</item>
|
||||
<item>5min</item>
|
||||
<item>6min</item>
|
||||
<item>7min</item>
|
||||
<item>8min</item>
|
||||
<item>9min</item>
|
||||
<item>10min</item>
|
||||
<item>15min</item>
|
||||
<item>20min</item>
|
||||
<item>30min</item>
|
||||
</array>
|
||||
|
||||
<array name="video_buffer_length_values">
|
||||
<item>0</item>
|
||||
<item>60</item>
|
||||
<item>90</item>
|
||||
<item>120</item>
|
||||
<item>150</item>
|
||||
<item>180</item>
|
||||
<item>210</item>
|
||||
<item>240</item>
|
||||
<item>300</item>
|
||||
<item>360</item>
|
||||
<item>420</item>
|
||||
<item>480</item>
|
||||
<item>540</item>
|
||||
<item>600</item>
|
||||
<item>900</item>
|
||||
<item>1200</item>
|
||||
<item>1800</item>
|
||||
</array>
|
||||
|
||||
<array name="video_buffer_size_names">
|
||||
<item>@string/automatic</item>
|
||||
<item>10MB</item>
|
||||
<item>20MB</item>
|
||||
<item>30MB</item>
|
||||
<item>40MB</item>
|
||||
<item>50MB</item>
|
||||
<item>60MB</item>
|
||||
<item>70MB</item>
|
||||
<item>80MB</item>
|
||||
<item>90MB</item>
|
||||
<item>100MB</item>
|
||||
<item>150MB</item>
|
||||
<item>200MB</item>
|
||||
<item>250MB</item>
|
||||
<item>300MB</item>
|
||||
<item>350MB</item>
|
||||
<item>400MB</item>
|
||||
<item>450MB</item>
|
||||
<item>500MB</item>
|
||||
</array>
|
||||
<array name="video_cache_size_values">
|
||||
|
||||
<array name="video_buffer_size_values">
|
||||
<item>0</item>
|
||||
<item>10</item>
|
||||
<item>20</item>
|
||||
<item>30</item>
|
||||
<item>40</item>
|
||||
<item>50</item>
|
||||
<item>60</item>
|
||||
<item>70</item>
|
||||
<item>80</item>
|
||||
<item>90</item>
|
||||
<item>100</item>
|
||||
<item>150</item>
|
||||
<item>200</item>
|
||||
<item>250</item>
|
||||
<item>300</item>
|
||||
<item>350</item>
|
||||
<item>400</item>
|
||||
<item>450</item>
|
||||
<item>500</item>
|
||||
</array>
|
||||
|
||||
|
|
|
@ -13,7 +13,9 @@
|
|||
<string name="subtitle_settings_key" translatable="false">subtitle_settings_key</string>
|
||||
<string name="subtitle_settings_chromecast_key" translatable="false">subtitle_settings_chromecast_key</string>
|
||||
<string name="quality_pref_key" translatable="false">quality_pref_key</string>
|
||||
<string name="video_cache_key" translatable="false">video_cache_key</string>
|
||||
<string name="video_buffer_size_key" translatable="false">video_buffer_size_key</string>
|
||||
<string name="video_buffer_length_key" translatable="false">video_buffer_length_key</string>
|
||||
<string name="video_buffer_disk_key" translatable="false">video_buffer_disk_key</string>
|
||||
<string name="prerelease_commit_hash" translatable="false">unknown_prerelease</string>
|
||||
<string name="use_system_brightness_key" translatable="false">use_system_brightness_key</string>
|
||||
<string name="swipe_enabled_key" translatable="false">swipe_enabled_key</string>
|
||||
|
@ -319,7 +321,11 @@
|
|||
<string name="dont_show_again">Don\'t show again</string>
|
||||
<string name="update">Update</string>
|
||||
<string name="watch_quality_pref">Preferred watch quality</string>
|
||||
<string name="video_cache_settings">Video cache size</string>
|
||||
<string name="video_buffer_size_settings">Video buffer size</string>
|
||||
<string name="video_buffer_length_settings">Video buffer length</string>
|
||||
<string name="video_buffer_disk_settings">Video cache on disk</string>
|
||||
<string name="video_buffer_description">May cause problems on systems with low ram or storage such as Android TV devices or old phones if you set it too high</string>
|
||||
|
||||
<string name="dns_pref">DNS over HTTPS</string>
|
||||
<string name="dns_pref_summary">Useful for bypassing ISP blocks</string>
|
||||
|
||||
|
|
|
@ -20,10 +20,7 @@
|
|||
android:key="@string/quality_pref_key"
|
||||
android:title="@string/watch_quality_pref"
|
||||
android:icon="@drawable/ic_baseline_hd_24" />
|
||||
<Preference
|
||||
android:key="@string/video_cache_key"
|
||||
android:title="@string/video_cache_settings"
|
||||
android:icon="@drawable/ic_baseline_storage_24" />
|
||||
|
||||
<SwitchPreference
|
||||
android:icon="@drawable/ic_baseline_picture_in_picture_alt_24"
|
||||
app:key="@string/pip_enabled_key"
|
||||
|
@ -66,6 +63,23 @@
|
|||
android:title="@string/double_tap_to_pause_settings"
|
||||
android:summary="@string/double_tap_to_pause_settings_des"
|
||||
app:defaultValue="false" />
|
||||
<Preference
|
||||
android:key="@string/video_buffer_disk_key"
|
||||
android:title="@string/video_buffer_disk_settings"
|
||||
android:summary="@string/video_buffer_description"
|
||||
android:icon="@drawable/ic_baseline_storage_24" />
|
||||
|
||||
<Preference
|
||||
android:key="@string/video_buffer_size_key"
|
||||
android:title="@string/video_buffer_size_settings"
|
||||
android:summary="@string/video_buffer_description"
|
||||
android:icon="@drawable/ic_baseline_storage_24" />
|
||||
|
||||
<Preference
|
||||
android:key="@string/video_buffer_length_key"
|
||||
android:title="@string/video_buffer_length_settings"
|
||||
android:summary="@string/video_buffer_description"
|
||||
android:icon="@drawable/ic_baseline_storage_24" />
|
||||
<!--
|
||||
<SwitchPreference
|
||||
android:icon="@drawable/ic_baseline_brightness_7_24"
|
||||
|
|
Loading…
Reference in a new issue