Видео, загруженные с помощью Dio / Flutter Downloader, проигрываются, но у них нет миниатюр. Я могу просматривать их в загрузках, но не в приложении галереи. Я предполагаю, что для просмотра видео в галерее требуется миниатюра. Я попытался использовать FFMPEG, чтобы добавить эскиз, но безуспешно. Вопрос в том, как добавить миниатюру к видео в формате mp4.
Future _downloadVideo(String url) async {
String filename = "${DateTime.now().millisecondsSinceEpoch}";
String downloadPath = "storage/emulated/0/Download";
String filePath = downloadPath + '/' + filename + '.mp4';
Dio dio = Dio();
var response = await dio.download(
url,
filePath,
deleteOnError: true,
lengthHeader: Headers.contentEncodingHeader
);
}
Как я уже сказал, я пытался использовать FFMPEG для кодирования, но безуспешно.
Future<bool> encode (String filename, String path) async {
final FlutterFFmpeg ffmpeg = FlutterFFmpeg();
String input = path + '/' + filename + '.mp4';
String output = path + '/CONV' + filename + ".mp4";
final tempPath = await getTemporaryDirectory();
String thumb = await Thumbnails.getThumbnail(
thumbnailFolder: tempPath.path, // creates the specified path if it doesn't exist
videoFile: input,
imageType: ThumbFormat.PNG,
quality: 100);
await ffmpeg.execute("-i $input -i $thumb -map 0 -map 1 -c:v mpeg4 -c:v:1 png -disposition:v:1 attached_pic $output");
}