flutter - 如何获取flutter ffmpeg执行的进度百分比

标签 flutter dart ffmpeg

我想在 flutter 中获得 ffmpeg 执行的百分比
我有一些代码示例,但我不知道该怎么做
安卓示例:

int start = message.indexOf("time=");
    int end = message.indexOf(" bitrate");
    if (start != -1 && end != -1) {
        String duration = message.substring(start + 5, end);
        if (duration != "") {
            try {
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
                sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
                dialog.setProgress((int)sdf.parse("1970-01-01 " + duration).getTime());                        
            }catch (ParseException e)
            {
                e.printStackTrace();
            }
        }
}
flutter 代码:
  void statisticsCallback(Statistics statistics) {
print("Statistics: executionId: ${statistics.executionId}, time: ${statistics.time}, size: ${statistics.size}, bitrate: ${statistics.bitrate}, speed: ${statistics.speed}, videoFrameNumber: ${statistics.videoFrameNumber}, videoQuality: ${statistics.videoQuality}, videoFps: ${statistics.videoFps}");
  }
如何从 statisticsCallback 方法生成执行进度?
请帮帮我

最佳答案

还有另一种方法可以解决这个问题。
抢先获得totalFileDuration使用 FFprobe而不是初始化 VideoPlayer如下 :

   final FlutterFFprobe flutterFFprobe = FlutterFFprobe();
      MediaInformation mediaInformation =
          await flutterFFprobe.getMediaInformation(audioPath!);
      Map? _mediaProperties = mediaInformation.getMediaProperties();
     final _videoDuration = double.parse(_mediaProperties!["duration"].toString());
然后正如最后一个答案所暗示的那样:
 void statisticsCallback(Statistics statistics) {
    totalProgress = (statistics.time * 100) ~/ _videoDuration;
    print("Statistics: executionId: ${statistics.executionId}, time: ${statistics.time}, size: ${statistics.size}, bitrate: ${statistics.bitrate}, speed: ${statistics.speed}, videoFrameNumber: ${statistics.videoFrameNumber}, videoQuality: ${statistics.videoQuality}, videoFps: ${statistics.videoFps}");
  }

关于flutter - 如何获取flutter ffmpeg执行的进度百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64534178/

相关文章:

flutter - 在文本字段中右键单击鼠标时防止复制粘贴功能 flutter web

flutter - 为什么这个内存泄漏?

Firebase.initializeApp() 给出错误 : Null check operator used on a null value

flutter - 无法在图表中显示数据 - 'List' 不是类型 'Map' 的子类型

macos - FFmpeg macos安装原因:找不到镜像

android - 软键盘中不显示下一步按钮

flutter - 打开文本字段会导致父部件重建

dart - 是否可以在 Dart 中使用条件导入和部分导入?

c++ - ffmpeg H264 一次编码帧用于网络流

c# - 如何使用 Video Converter for .NET (C#) 或其他 FFMpeg 包装器在 Asp MVc 中创建视频缩略图