Как добавить миниатюру видео на Flutter? - PullRequest
1 голос
/ 08 мая 2020

Видео, загруженные с помощью 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");

  }
...