getAudioDuration method
获取音频时长
Implementation
Future<Duration?> getAudioDuration(String filePath) async {
try {
// 临时播放器用于获取时长
final tempPlayer = AudioPlayer();
await tempPlayer.setSource(DeviceFileSource(filePath));
// 等待时长加载
Duration? duration;
final completer = Completer<Duration?>();
tempPlayer.onDurationChanged.listen((d) {
if (!completer.isCompleted) {
completer.complete(d);
}
});
// 设置超时
Timer(const Duration(seconds: 3), () {
if (!completer.isCompleted) {
completer.complete(null);
}
});
duration = await completer.future;
await tempPlayer.dispose();
return duration;
} catch (e) {
print('获取音频时长失败: $e');
return null;
}
}