我想循环播放视频,直到声音停止,一切正常,但需要太多时间。
如果我的音频文件长度为 4 分钟,则大约需要 4 分钟,而且大小也太大,这是我的命令
String[] cmd = new String[]{"-i",audioFile.getAbsolutePath(),"-filter_complex","movie="+videoFile.getAbsolutePath()+":loop=0,setpts=N/(FRAME_RATE*TB)","-c","copy","-y",createdFile.getAbsolutePath()};
最佳答案
我们在这里看到许多“在 Android 上使用 ffmpeg 编码太慢”的问题。假设您使用 libx264 编码添加 -preset ultrafast
和 -crf 26
或您认为可以接受的任何值(参见 FFmpeg Wiki: H.264 )。
如果您想通过 ffmpeg 和 x264 使用基于软件的编码,您无能为力。据我所知,FFmpeg 还不支持 MediaCodec 硬件编码。它确实支持 H.264、HEVC、MPEG-2、MPEG-4、VP8 和 VP9 的 MediaCodec 视频解码,但解码不是这里的瓶颈。
您可以尝试让 x264 使用您的 CPU 功能,例如避免使用 --disable-asm
编译 x264 ,但我不知道你的硬件是否可行。
请注意,使用 -c copy
进行流复制(重新复用)过滤同一流时不可能,因此将其更改为更具体的 -c:a copy
因为您没有过滤音频。
关于ffmpeg - 加快Android中的FFmpeg处理时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57970304/