Files
video/app/lib/core/config/test_stream.dart
2026-10-15 20:36:59 +08:00

21 lines
1005 B
Dart

import '../../models/video_item.dart';
/// 开发期播放地址钩子:
/// 服务端 /hls 转码产物未就绪前,用 --dart-define=TEST_VIDEO_URL=xxx 注入公网
/// 测试 m3u8,把 video_url 为空或相对路径的条目替换为测试流以验证播放器。
/// 生产构建不传该 define,零开销;服务端 /hls 就绪后此钩子可保留作降级兜底。
const String _testStreamUrl = String.fromEnvironment('TEST_VIDEO_URL');
/// 解析实际播放地址。
/// - 注入了测试流且原始地址不可用(空/非 http 绝对地址)→ 返回测试流
/// - 否则返回原始 video_url
///
/// [testUrl] 可选参数便于单元测试(fromEnvironment 在测试中恒为空)。
String resolvePlayUrl(VideoItem item, {String? testUrl}) {
final injected = testUrl ?? _testStreamUrl;
final raw = item.videoUrl.trim();
final playable = raw.startsWith('http://') || raw.startsWith('https://');
if (!playable && injected.isNotEmpty) return injected;
return raw;
}