Flutter 中运行相同 FFmpeg 命令为何比命令行中慢很多,如何 Debug?

发布于 1周前 作者 gougou168 来自 Flutter

就是一个简单的图片加水印任务:

ffmpeg -hide_banner -y -i image.AVIF -i watermark.png -filter_complex "overlay=(main_w-overlay_w-50):(main_h-overlay_h-50)" output.AVIF

命令行中运行几乎秒完成,但在 Flutter 中几乎要半分钟。

await Process.run('ffmpeg', [
    '-hide_banner',
    '-y',
    '-i',
    'image.AVIF',
    '-i',
    'watermark.png',
    '-filter_complex',
    'overlay=(main_w-overlay_w-50):(main_h-overlay_h-50)',
    'output.AVIF',
]);

整了一天了,完全没有头绪,求教,求教


Flutter 中运行相同 FFmpeg 命令为何比命令行中慢很多,如何 Debug?

更多关于Flutter 中运行相同 FFmpeg 命令为何比命令行中慢很多,如何 Debug?的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

3 回复

你可以试试加 “-v 0”,把 ffmpeg 的输出完全关掉。
有可能是进程的输出流(包括 Error 流)阻塞了。

如果可以,但是你希望保留输出,那么研究一下 dart 里如何把 Process 的输出读取出来

更多关于Flutter 中运行相同 FFmpeg 命令为何比命令行中慢很多,如何 Debug?的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


好的,谢谢,我试一试

在Flutter中运行FFmpeg命令时,如果遇到比命令行中慢很多的情况,可能是由多种因素导致的。以下是一些可能的Debug步骤和考虑因素:

  1. 环境差异:Flutter和原生命令行环境可能存在差异,如CPU分配、内存限制等。检查Flutter应用的性能监控,确保资源分配合理。
  2. FFmpeg版本与配置:确认Flutter中集成的FFmpeg版本与命令行中使用的版本是否一致。不同版本的FFmpeg可能有性能差异。同时,检查FFmpeg的配置选项,确保它们适用于Flutter环境。
  3. 命令执行方式:在Flutter中,FFmpeg命令可能是通过某种封装或插件执行的。这种封装可能会引入额外的延迟。尝试直接在Flutter中使用原生命令行接口调用FFmpeg,以排除封装问题。
  4. 输入/输出处理:Flutter应用处理输入/输出的方式可能与命令行不同。例如,文件读写速度、网络I/O等可能影响FFmpeg的执行效率。
  5. 日志与性能分析:增加日志记录,分析FFmpeg在Flutter中的执行过程。使用性能分析工具(如Android Profiler、iOS Instruments等)来监测Flutter应用的性能瓶颈。

综上所述,Debug这个问题需要综合考虑多个方面。通过逐步排查,可以找到导致性能下降的具体原因,并采取相应的优化措施。

回到顶部