[英]FFmpeg - ANR on large files when mixing video and audio
这个命令
ffmpeg -i video.webm -i audio.m4a -c复制output.mkv
转换结束时,对于任何大文件(例如大于700mb),在android中总是会产生ANR错误。
仅在成功生成输出之后的转换过程的最后阶段才产生ANR错误,而不是在中间或开头等。
因此,我怀疑它最终与某些I / O内容有关。 有人可以对此有所帮助,并帮助消除此ANR问题吗?
默认情况下, ffmpeg每隔500ms产生进度输出。 FFmpeg-Android处理此输出的方式是,将进度消息返回到onProgress()
回调,还将所有这些(相对较短的)消息附加到String onSuccess()
在onSuccess()
返回onSuccess()
。
发生的情况是,对于较大的视频文件,内存可能已用尽,或者至少垃圾回收器会非常努力地工作。 这些String操作发生在Main线程上,很容易导致ANR。
作为一种快速的解决方法,可以将-nostats
传递给ffmpeg命令行:
ffmpeg -i video.webm -i audio.m4a -c copy output.mkv -nostats
要解决此问题,请查看https://github.com/bravobit/FFmpeg-Android/pull/128 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.