configure audio buffer

Signed-off-by: dom <githubaccount56556@proton.me>
This commit is contained in:
dom
2026-06-12 10:04:51 +08:00
parent 5c3a89346c
commit 592e8d62ba
4 changed files with 25 additions and 24 deletions

View File

@@ -336,6 +336,7 @@ class AudioController extends GetxController
? (desktopVolume.value * 100).toString()
: Pref.playerVolume.toString(),
'volume-max': kMaxVolume.toString(),
...Pref.initBuffer(),
},
),
);

View File

@@ -768,7 +768,6 @@ class _AudioPageState extends State<AudioPage> {
Widget _buildProgressBar(ColorScheme colorScheme) {
final primary = colorScheme.primary;
final thumbGlowColor = primary.withAlpha(80);
final bufferedBarColor = primary.withValues(alpha: 0.4);
final baseBarColor = colorScheme.isDark
? const Color(0x33FFFFFF)
: const Color(0x33999999);
@@ -778,7 +777,7 @@ class _AudioPageState extends State<AudioPage> {
total: _controller.duration.value,
baseBarColor: baseBarColor,
progressBarColor: primary,
bufferedBarColor: bufferedBarColor,
bufferedBarColor: Colors.transparent,
thumbColor: primary,
thumbGlowColor: thumbGlowColor,
thumbGlowRadius: 0,

View File

@@ -621,29 +621,10 @@ class PlPlayerController with BlockConfigMixin {
}
Map<String, String>? _buffer;
Map<String, String> get buffer => _buffer ??= _initBuffer();
Map<String, String> get buffer =>
_buffer ??= Pref.initBuffer(_playbackSpeed.value);
Map<String, String>? _liveBuffer;
Map<String, String> get liveBuffer => _liveBuffer ??= _initLiveBuffer();
Map<String, String> _initBuffer() {
final bufSec = Pref.bufferSec * _playbackSpeed.value;
final bufSiz = (Pref.bufferSize * 0x100000).toStringAsFixed(0);
return {
'cache': 'yes',
'cache-secs': bufSec.toStringAsFixed(3),
'demuxer-hysteresis-secs': (bufSec / 1.5).toStringAsFixed(3),
'demuxer-max-bytes': bufSiz,
'demuxer-max-back-bytes': bufSiz,
};
}
Map<String, String> _initLiveBuffer() {
return {
'cache': 'yes',
'demuxer-max-bytes': (Pref.bufferSize * 0x200000).toStringAsFixed(0),
'demuxer-max-back-bytes': '0',
};
}
Map<String, String> get liveBuffer => _liveBuffer ??= Pref.initLiveBuffer();
// 配置播放器
Future<void> _createVideoController(

View File

@@ -435,6 +435,26 @@ abstract final class Pref {
static double get bufferSec =>
_setting.get(SettingBoxKey.bufferSec, defaultValue: 16.0);
static Map<String, String> initBuffer([double playbackSpeed = 1.0]) {
final bufSec = Pref.bufferSec * playbackSpeed;
final bufSiz = (Pref.bufferSize * 0x100000).toStringAsFixed(0);
return {
'cache': 'yes',
'cache-secs': bufSec.toStringAsFixed(3),
'demuxer-hysteresis-secs': (bufSec / 1.5).toStringAsFixed(3),
'demuxer-max-bytes': bufSiz,
'demuxer-max-back-bytes': bufSiz,
};
}
static Map<String, String> initLiveBuffer() {
return {
'cache': 'yes',
'demuxer-max-bytes': (Pref.bufferSize * 0x200000).toStringAsFixed(0),
'demuxer-max-back-bytes': '0',
};
}
static String get audioOutput => _setting.get(
SettingBoxKey.audioOutput,
defaultValue: AudioOutput.defaultValue,