import 'dart:io'; import 'dart:typed_data'; import 'package:dio/dio.dart' as dio; import 'package:vid/us/vid_us_image.dart'; import 'package:vid/us/vid_us_image_data.dart'; /// Vid文件帮助工具 class VidFileHelper { /// 从文件获取单帧图像 /// /// [file] vid单帧图像文件对象 static Future getImageFromFile(File file) async { final data = await getDataFromFile(file); if (data != null) { final frame = data.getImage(0); return frame; } return null; } /// 从文件中获取Vid信息 /// /// [file] vid文件对象 static Future getDataFromFile(File file) async { try { final fileData = await file.readAsBytes(); final vidData = VidUsImageData(fileData); return vidData; } catch (e) { // logger.e return null; } } /// 从链接获取单帧图像 /// /// [url] vid单帧图像链接 static Future getImageFromNetwork(String url) async { final data = await getDataFromNetwork(url); if (data != null) { final frame = data.getImage(0); return frame; } return null; } /// 从链接获取Vid信息 /// /// [url] vid文件链接 static Future getDataFromNetwork(String url) async { try { final httpClient = dio.Dio(dio.BaseOptions( responseType: dio.ResponseType.bytes, sendTimeout: 10 * 1000, )); final response = await httpClient.get(url); httpClient.close(); final bytes = response.data as Uint8List; final vidData = VidUsImageData(bytes); return vidData; } catch (e) { // logger return null; } } }