安卓FFmpeg输出错误

6
我正在使用https://github.com/writingminds/ffmpeg-android-java在Android上运行FFmpeg命令。我试图将一个图片覆盖到视频上。但是,当我执行此命令时,出现了以下错误。请帮我修改。
ffmpeg -i input.mp4 strict -2 -i overlay.jpg -filter_complex [0:v][1:v] overlay=25:25:enable='between(t,0,4)' output.mp4

Output file #0 does not contain any stream

有人能帮我吗?提前感谢!


有什么进展吗?我也遇到了这个问题。 - Mateus Gondim
不是的。我认为问题在于我们使用的构建版本。尝试构建自己的新版本FFMpeg。使用正确的功能进行构建。我认为我们使用的构建版本没有正确的东西。最终我放弃了FFMpeg,它使我的应用程序大小增加了很多,并且运行速度很慢。 - Daniel Christopher
我明白了。我相信我已经找到了这个问题的解决方案,并发布为答案=) - Mateus Gondim
太棒了。我猜错了。实际上,我对FFMpeg一无所知。我的假设相当离谱哈哈。 - Daniel Christopher
1个回答

6

我曾遇到同样的问题,我的问题是:我调用execute方法的方式有误。我传递的字符串数组形式如下:

final String[] cmd = new String[] { "-i input.mp4 strict -2 -i overlay.jpg -filter_complex [0:v][1:v] overlay=25:25:enable='between(t,0,4)' output.mp4" };

然而,创建这个数组的正确方法是将命令拆分为单独的字符串:

final String[] cmd = new String[]{ "-i", "input.mp4", "strict", "-2", "-i", "overlay.jpg", 
                "-filter_complex", "[0:v][1:v]", "overlay=25:25:enable='between(t,0,4)'", "output.mp4"};

然后调用 execute 函数:

try {
    final FFmpeg ffmpeg = FFmpeg.getInstance(context);
    ffmpeg.execute(cmd, new FFmpegExecuteResponseHandler() {
        @Override
        public void onSuccess(String message) {

        }

        @Override
        public void onProgress(String message) {

        }

        @Override
        public void onFailure(String message) {

        }

        @Override
        public void onStart() {

        }

        @Override
        public void onFinish() {

        }
    });
} catch (FFmpegCommandAlreadyRunningException e) {

}

我在这个问题的评论区找到了lauffenp提供的解决方案:https://github.com/WritingMinds/ffmpeg-android-java/issues/88


嗨,你怎么才能成功运行这个命令呢?你能帮我看看吗?我一直在得到这个错误信息:“A/libc: Fatal signal 11 (SIGSEGV),code 1,fault addr 0x0 in tid 14661 (AsyncTask #4)”,每次使用filter_complex命令时都会出现。 - Nisarg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接