mirror of
https://gitlab.com/comunic/comunicmobile
synced 2025-06-19 00:05:16 +00:00
Generate video thumbnails
This commit is contained in:
40
lib/utils/video_utils.dart
Normal file
40
lib/utils/video_utils.dart
Normal file
@ -0,0 +1,40 @@
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:comunic/models/api_request.dart';
|
||||
import 'package:comunic/utils/log_utils.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:path/path.dart' as path;
|
||||
import 'package:path_provider/path_provider.dart';
|
||||
import 'package:random_string/random_string.dart';
|
||||
import 'package:video_thumbnail/video_thumbnail.dart';
|
||||
|
||||
/// Video utilities
|
||||
///
|
||||
/// @author Pierre Hubert
|
||||
|
||||
/// Generate a thumbnail for a video. In case of failure, return null
|
||||
Future<BytesFile> generateVideoThumbnail({
|
||||
@required BytesFile videoFile,
|
||||
int maxWidth,
|
||||
}) async {
|
||||
File file;
|
||||
|
||||
try {
|
||||
final tempDir = await getTemporaryDirectory();
|
||||
if (tempDir == null) return null;
|
||||
file = File(path.join(tempDir.path, randomString(15, from: 65, to: 90)));
|
||||
|
||||
await file.writeAsBytes(videoFile.bytes);
|
||||
|
||||
return BytesFile(
|
||||
"thumb.png",
|
||||
await VideoThumbnail.thumbnailData(
|
||||
video: file.absolute.path, maxWidth: maxWidth),
|
||||
);
|
||||
} catch (e, s) {
|
||||
logError(e, s);
|
||||
return null;
|
||||
} finally {
|
||||
if (file != null && await file.exists()) await file.delete();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user