JAVACV在Android上的渲染性能
我正在做一个应用程序,使用sd卡中保存的一组照片创建视频。我试图解决的问题是,当我创建一些视频时,应用程序崩溃。崩溃取决于源图片文件的分辨率。例如,我可以使用分辨率为320x480的400幅图像渲染视频,但只能使用分辨率为2500x3200的图像渲染25帧视频 我使用Asynctask在后台执行渲染过程(用于向用户提供反馈并使其了解渲染过程)。渲染过程崩溃时,logcat中不会捕获任何警告/错误/etc。使用DDMS检查内存使用情况时,我无法查看任何内存泄漏(我也没有在logcat上收到任何内存警告)。出于这个原因,我认为这可能是一个与ffmpeg库相关的问题(但我不知道) 我测试了avcodec.java上定义的不同编解码器,如:JAVACV在Android上的渲染性能,android,video,javacv,Android,Video,Javacv,我正在做一个应用程序,使用sd卡中保存的一组照片创建视频。我试图解决的问题是,当我创建一些视频时,应用程序崩溃。崩溃取决于源图片文件的分辨率。例如,我可以使用分辨率为320x480的400幅图像渲染视频,但只能使用分辨率为2500x3200的图像渲染25帧视频 我使用Asynctask在后台执行渲染过程(用于向用户提供反馈并使其了解渲染过程)。渲染过程崩溃时,logcat中不会捕获任何警告/错误/etc。使用DDMS检查内存使用情况时,我无法查看任何内存泄漏(我也没有在logcat上收到任何内存
AV_CODEC_ID_MPEG1VIDEO = 1,
AV_CODEC_ID_MPEG2VIDEO = 2,
AV_CODEC_ID_H263 = 5,
AV_CODEC_ID_MJPEG = 8,
等
尝试使用无损视频编解码器似乎没有效果,而且在尝试使用某些编解码器时,我也会遇到一些错误
我正在索尼爱立信Xperia Arc(1ghz cpu,320mb内存)上运行我的应用程序
我不知道我的智能手机是否有足够的能力播放长高清视频,但我看到市场上有一些类似的应用程序可以做到这一点
如果您有任何建议,我将不胜感激。我不知道如何解决这个问题
谢谢。好的,我终于找到了解决方案,但不是最初的问题 为了创建视频,我使用了如下代码:
FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(name,width,heigth);
recorder.start()
while(imagesinfolder){
IplImage img = highgui.cvLoadImage("/path/to/image[i].jpg")
recorder.record(img)
i++;
}
这似乎造成了内存问题,可能是因为垃圾收集器没有清理IplImage
我的解决方案是使用opencv_core.cvLoadImage(img)代替highgui.cvLoadImage;然后,opencv_core.cvReleaseImage(img);在每次迭代中
FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(name,width,heigth);
recorder.start()
while(imagesinfolder){
IplImage img = opencv_core.cvLoadImage("/path/to/image[i].jpg")
recorder.record(img)
img.cvReleaseImage();
i++;
}
使用它,所有的问题都消失了,我可以渲染没有任何问题的长视频