我有这个代码:
public InputStream getInputStream() throws Exception {
try {
process = Runtime.getRuntime().exec("ffmpeg -f dshow -i video=\"" + query + "\":audio=\"" + microPhoneName + "\" -r 25 -vcodec mpeg4 -acodec mp3 -f avi -");
}
catch (Exception e) {
}
return process.getInputStream();
}
当我使用该inputStream.read(b)
命令时,它只工作一点点(180 到 400 次,取决于我使用的格式和编解码器)然后inputStream
锁定read
并且应用程序不再运行。
有什么问题?内存饱和(ffmpeg进程内存至少14mb)?有没有办法解锁这种情况(清理内存,使用文件作为桥梁以防止锁定)?
当然,我需要一点“实时”,而不是“后期处理”。我不受限于使用 ffmpeg,如有必要,我可以更改它。