加快Android中的FFmpeg处理时间

时间:2019-09-17 08:29:45

标签: ffmpeg android-ffmpeg

我想循环播放视频,直到声音停止为止,一切正常,但需要太多时间。 如果我的音频文件长度为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()};

2 个答案:

答案 0 :(得分:1)

我们在这里看到许多“在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,因为您没有过滤音频。

答案 1 :(得分:0)

尝试在查询中添加“” -preset“,” ultrafast“,..... String。] cmd = new String [] {”-i“,audioFile.getAbsolutePath(),-preset “,” ultrafast“,”-filter_complex“,” movie =“ + videoFile.getAbsolutePath()+”:loop = 0,setpts = N /(FRAME_RATE * TB)“,”-c“,” copy“,”- y“,createdFile.getAbsolutePath()};