我在我的项目中使用FFmpegAndroid库来叠加视频。
ffmpeg进程位于服务中,我想向用户显示一个进度通知,以确定进程的进度。
我已经查看了ffmpeg的输出,但没有任何内容指定估计的持续时间。 也许有可能通过输出中显示的其他参数来计算它,例如 fps,比特率或速度,但我没有线索..
有什么想法吗?
答案 0 :(得分:2)
为此目的,您可以使用此命令FFProbe:
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 example.mp4
输出将在几秒钟内完成:
因此,为了显示视频处理的进度,首先使用FFProbe来获取视频长度,然后在FFMpeg处理处理时,您可以根据FFMpeg进度输出计算剩余时间。
答案 1 :(得分:0)
计算进度的方法首先是获取视频时长:
可以使用ffmpeg以及android本机类完成,如MediaMetadataRetriever,如here所述。
在我们进入onProgress回调ffmpeg执行视频时,即:
frame= 171 fps= 27 q=29.0 size= 43kB time=00:00:04.06 bitrate= 87.5kbits/s dup=12 drop=9 speed=0.651x
我们能够获得执行的进度百分比。