Files
xtremflow/bin/test/live_input_args_test.dart
T
MichaelandClaude Opus 5.5 0ea60ccbfa Zap : ouvrir les chaînes par le HLS du panneau, ~4 s gagnées
Mesuré en prod avec la sonde admin : le panneau met 4,2 à 4,4 s à
répondre la redirection d'un .ts, contre 0,2 à 1,3 s pour un .m3u8 dont
le premier segment arrive ensuite en 50 ms.

turbo.ts et les sessions HLS live lisent désormais le .m3u8 du panneau
(-live_start_index -2 : deux segments d'avance d'un coup), avec repli
automatique sur le .ts si le HLS ne livre rien — dans la même réponse
pour turbo.ts, le lecteur ne voit qu'un démarrage plus long. Pas de
reconnect_at_eof en HLS : chaque segment finit par un EOF (leçon de
xtremobile). Le navigateur reçoit toujours le même flux MPEG-TS.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 23:08:08 +02:00

36 lines
1.3 KiB
Dart

import 'package:test/test.dart';
import '../api/streaming_handler.dart';
void main() {
group('liveInputArgs', () {
test('HLS : jamais de reconnect_at_eof (chaque segment finit par un EOF)',
() {
final args = liveInputArgs('http://p/live/u/p/1.m3u8', hls: true);
expect(args, isNot(contains('-reconnect_at_eof')));
expect(args, isNot(contains('-reconnect_streamed')));
});
test('HLS : démarre deux segments avant le direct pour avoir de l\'avance',
() {
final args = liveInputArgs('http://p/live/u/p/1.m3u8', hls: true);
final i = args.indexOf('-live_start_index');
expect(i, isNot(-1));
expect(args[i + 1], '-2');
// Option de démuxeur : doit précéder -i.
expect(i, lessThan(args.indexOf('-i')));
});
test('.ts : garde la reconnexion en fin de flux (coupures du panneau)', () {
final args = liveInputArgs('http://p/live/u/p/1.ts', hls: false);
expect(args, contains('-reconnect_at_eof'));
expect(args, isNot(contains('-live_start_index')));
});
test('l\'URL est la dernière entrée, juste après -i', () {
final args = liveInputArgs('http://p/x.m3u8', hls: true);
expect(args.last, 'http://p/x.m3u8');
expect(args[args.length - 2], '-i');
});
});
}