首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >颤振ffmpeg_kit_flutter:获取FFmpegKit.executeAsync错误

颤振ffmpeg_kit_flutter:获取FFmpegKit.executeAsync错误
EN

Stack Overflow用户
提问于 2021-12-12 12:33:19
回答 1查看 663关注 0票数 4

我编写了一个运行FFMPEG命令的测试程序,它成功地运行了-i "/data/user/0/com.example.test/cache/file_picker/test.mp4" -c:v mpeg4 "/data/user/0/com.example.test/cache/test-1639310478143.mp4"命令。这只是为了确保正确地加载了ffmpeg_kit_flutter并获得了所有权限。

但是,执行-i "source.mp4" -vf fps=30 "thumb%03d.jpg" -hide_banner命令时有问题。例如,当我在windows上运行该命令时,它本身运行良好:

代码语言:javascript
运行
复制
md frame1
ffmpeg -i "test.mp4" -vf fps=30 frame1/thumb%%04d.jpg -hide_banner

(注意: double %是指在windows批处理文件中转义%)

这就是我在android上所做的事:

创建临时folder.

  • Execute:

代码语言:javascript
运行
复制
    String command = '-i "/data/user/0/com.example.test/cache/file_picker/test.mp4" -vf fps=30 "/data/user/0/com.example.test/cache/tmp-1639309602536/thumb%03d.jpg" -hide_banner';
    FFmpegKit.executeAsync(command, (session) async {
        final returnCode = await session.getReturnCode();
        if (ReturnCode.isSuccess(returnCode)) {
            //ok
        } else if (ReturnCode.isCancel(returnCode)) {
            //cancelled
        } else {
            //error
        }
    });

散文不工作(总是到错误部分)。我的问题是:

  1. 在windows和android上运行该命令有什么区别?为什么它能在windows上工作,而不能在android上工作呢?
  2. ,我怎么能得到任何FFMPEG错误的解释?在我的例子中,我只知道这不起作用,但我不知道原因。--
EN

回答 1

Stack Overflow用户

发布于 2022-08-02 05:55:07

使用命令字符串中的空格字符

FFmpegKit和FFprobeKit中的execute()和FFprobeKit()方法使用空格字符作为分隔符,将命令拆分为参数。如果您的命令参数中包含一个空格字符,那么它将被拆分为两个参数,您的命令执行将失败。若要防止这种情况,请使用单引号或双引号包装该参数。包装将防止参数被分割。

或者,您可以自己将命令拆分为参数,并调用一个重载的接受参数数组的executeWithArguments()/executeWithArgumentsAsync()方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70323567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档