视频缩略图

此插件可从视频文件或URL生成缩略图。它可以在内存中返回图像或将其写入文件。它提供了丰富的选项来控制图像格式、分辨率和质量。支持iOS和Android。

pub ver license

video-file video-url

方法

功能 参数 描述 返回值
thumbnailData String ,可选的 Map<String, dynamic> [headers],ImageFormat [imageFormat](JPEG/PNG/WEBP),int [maxHeight](0:表示视频的原始分辨率,或按源宽高比缩放),[maxWidth](0:表示视频的原始分辨率,或按源宽高比缩放),int [timeMs](在指定的毫秒附近生成缩略图),int [quality](0-100) 生成缩略图 [Future<Uint8List>]
thumbnailFile String ,可选的 Map<String, dynamic> [headers],String [thumbnailPath](存储缩略图文件的文件夹或完整路径,null表示保存在视频文件相同的文件夹中),ImageFormat [imageFormat](JPEG/PNG/WEBP),int [maxHeight](0:表示视频的原始分辨率,或按源宽高比缩放),int [maxWidth](0:表示视频的原始分辨率,或按源宽高比缩放),int [timeMs](在指定的毫秒附近生成缩略图),int [quality](0-100) 创建缩略图文件 [Future<String>]

警告

在Android平台上,同时提供maxHeightmaxWidth会产生不同的结果,它实际上会将缩略图缩放到指定的 maxHeight 和 maxWidth。要从网络资源生成缩略图,video必须正确进行URL编码。

用法

安装video_thumbnail添加为pubspec.yaml文件中的依赖项。

dependencies:
  video_thumbnail: ^0.5.3

导入

import 'package:video_thumbnail/video_thumbnail.dart';

在内存中从视频文件生成缩略图

final uint8list = await VideoThumbnail.thumbnailData(
  video: videofile.path,
  imageFormat: ImageFormat.JPEG,
  maxWidth: 128, // specify the width of the thumbnail, let the height auto-scaled to keep the source aspect ratio
  quality: 25,
);

从视频URL生成缩略图文件

final fileName = await VideoThumbnail.thumbnailFile(
  video: "https://github.flutterdart.cn/assets-for-api-docs/assets/videos/butterfly.mp4",
  thumbnailPath: (await getTemporaryDirectory()).path,
  imageFormat: ImageFormat.WEBP,
  maxHeight: 64, // specify the height of the thumbnail, let the width auto-scaled to keep the source aspect ratio
  quality: 75,
);

从pubspec.yaml中声明的视频资源生成缩略图文件

final byteData = await rootBundle.load("assets/my_video.mp4");
Directory tempDir = await getTemporaryDirectory();

File tempVideo = File("${tempDir.path}/assets/my_video.mp4")
  ..createSync(recursive: true)
  ..writeAsBytesSync(byteData.buffer.asUint8List(byteData.offsetInBytes, byteData.lengthInBytes));

final fileName = await VideoThumbnail.thumbnailFile(
  video: tempVideo.path,
  thumbnailPath: (await getTemporaryDirectory()).path,
  imageFormat: ImageFormat.PNG,  
  quality: 100,
);

注意事项

欢迎Fork或Pull Requests。目前使用libwebp通过iOS生成WebP缩略图似乎存在一些性能问题。

GitHub

查看 Github