mirror of
https://github.com/R0m1k3/xtremflow.git
synced 2026-10-11 17:30:00 +02:00
feat: implement Turbo-Start stream acceleration
- Add direct MPEG-TS support and optimized HLS tuning - Implement low-latency sync and instant bitrate selection - Achieve TiviMate-like zapping speed by reducing initial buffers
This commit is contained in:
1 parent
736ab0f51c
commit
0ca6f96710
5 files changed
+67
-18
No files matched your search
+13
-1
@@ -250,7 +250,19 @@
|
||||
return false;
|
||||
}
|
||||
|
||||
const hls = new Hls({ maxBufferLength: 45, enableWorker: true });
|
||||
const isTurbo = urlParams.get('turbo') === 'true';
|
||||
|
||||
const hls = new Hls({
|
||||
maxBufferLength: isTurbo ? 30 : 45,
|
||||
enableWorker: true,
|
||||
liveSyncDurationCount: isTurbo ? 2 : 4,
|
||||
// Turbo-Start specific
|
||||
startLevel: isTurbo ? 0 : -1,
|
||||
initialLiveManifestSize: 1,
|
||||
abrEwmaDefaultEstimate: 500000,
|
||||
manifestLoadingRetryDelay: 500,
|
||||
levelLoadingRetryDelay: 500
|
||||
});
|
||||
window.hlsInstance = hls;
|
||||
hls.loadSource(url);
|
||||
hls.attachMedia(video);
|
||||
|
||||
+16
-7
@@ -242,13 +242,21 @@
|
||||
return false;
|
||||
}
|
||||
|
||||
const isTurbo = urlParams.get('turbo') === 'true';
|
||||
|
||||
const hls = new Hls({
|
||||
maxBufferLength: 60, // Increased for better stability
|
||||
maxMaxBufferLength: 120,
|
||||
maxBufferLength: isTurbo ? 30 : 60,
|
||||
maxMaxBufferLength: isTurbo ? 60 : 120,
|
||||
enableWorker: true,
|
||||
liveSyncDurationCount: 5, // More stable sync
|
||||
liveMaxLatencyDurationCount: 15,
|
||||
lowLatencyMode: true
|
||||
liveSyncDurationCount: isTurbo ? 2 : 5, // Aggressive sync for Turbo
|
||||
liveMaxLatencyDurationCount: isTurbo ? 10 : 15,
|
||||
lowLatencyMode: true,
|
||||
// Turbo-Start specific
|
||||
startLevel: isTurbo ? 0 : -1, // Lowest bitrate first
|
||||
initialLiveManifestSize: 1,
|
||||
abrEwmaDefaultEstimate: 500000, // Start with conservative estimate
|
||||
manifestLoadingRetryDelay: 500,
|
||||
levelLoadingRetryDelay: 500
|
||||
});
|
||||
|
||||
window.hlsInstance = hls;
|
||||
@@ -277,14 +285,15 @@
|
||||
|
||||
if (!mpegts.isSupported()) return false;
|
||||
|
||||
const isTurbo = urlParams.get('turbo') === 'true';
|
||||
const player = mpegts.createPlayer({
|
||||
type: 'mpegts',
|
||||
isLive: isLive,
|
||||
url: url
|
||||
}, {
|
||||
enableWorker: true,
|
||||
stashInitialSize: 512 * 1024, // Smaller stash for faster start and better audio sync
|
||||
enableStashBuffer: true,
|
||||
stashInitialSize: isTurbo ? 128 * 1024 : 512 * 1024, // Tiny stash for Turbo zapping
|
||||
enableStashBuffer: !isTurbo, // Direct pass-through for Live TV Turbo
|
||||
lazyLoad: false
|
||||
});
|
||||
|
||||
|
||||
+13
-5
@@ -228,13 +228,21 @@
|
||||
// Android / Chrome - HLS.js
|
||||
if (isHLS && Hls.isSupported()) {
|
||||
log('Using Hls.js optimized for mobile');
|
||||
const isTurbo = urlParams.get('turbo') === 'true';
|
||||
|
||||
const hls = new Hls({
|
||||
maxBufferLength: 60, // More buffer for mobile stability
|
||||
maxMaxBufferLength: 120,
|
||||
liveSyncDurationCount: 5,
|
||||
liveMaxLatencyDurationCount: 15,
|
||||
maxBufferLength: isTurbo ? 30 : 60,
|
||||
maxMaxBufferLength: isTurbo ? 60 : 120,
|
||||
liveSyncDurationCount: isTurbo ? 2 : 5,
|
||||
liveMaxLatencyDurationCount: isTurbo ? 10 : 15,
|
||||
enableWorker: true,
|
||||
lowLatencyMode: false // Disable low latency for continuity
|
||||
lowLatencyMode: !isTurbo, // Prioritize stability unless Turbo requested
|
||||
// Turbo-Start specific
|
||||
startLevel: isTurbo ? 0 : -1,
|
||||
initialLiveManifestSize: 1,
|
||||
abrEwmaDefaultEstimate: 500000,
|
||||
manifestLoadingRetryDelay: 500,
|
||||
levelLoadingRetryDelay: 500
|
||||
});
|
||||
hls.loadSource(streamUrl);
|
||||
hls.attachMedia(video);
|
||||
|
||||
Reference in new issue
Block a user