Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从视频中提取帧时性能低下_Android_Video_Ffmpeg_Javacv - Fatal编程技术网

Android 从视频中提取帧时性能低下

Android 从视频中提取帧时性能低下,android,video,ffmpeg,javacv,Android,Video,Ffmpeg,Javacv,我正在写一个视频处理应用程序,遇到了一点小麻烦 其思想是从视频文件中提取帧(图像),在GPU上进行处理,然后将其写回新的视频文件 到目前为止,我已经成功地使用 唯一的问题是提取帧需要很长时间(在200ms区域)。加上GPU处理时间和写入新文件所需的时间,总的处理时间大约为每帧700毫秒 这就是我抓取画面的方式: FFmpegFrameGrabber frameGrabber = new FFmpegFrameGrabber(videoLocation); frameGrabber.start

我正在写一个视频处理应用程序,遇到了一点小麻烦

其思想是从视频文件中提取帧(图像),在GPU上进行处理,然后将其写回新的视频文件

到目前为止,我已经成功地使用

唯一的问题是提取帧需要很长时间(在200ms区域)。加上GPU处理时间和写入新文件所需的时间,总的处理时间大约为每帧700毫秒

这就是我抓取画面的方式:

 FFmpegFrameGrabber frameGrabber = new FFmpegFrameGrabber(videoLocation);
 frameGrabber.start();

 frameGrabber.setFrameNumber(frameNumber);
 frame = frameGrabber.grabImage();
很标准,没什么特别的,而且很有效。我能够处理帧,将其转换为位图,等等

正如我之前所说,底部的两个指令(设置帧编号和抓取图像)需要很长时间。写框架也需要相当多的时间


如果有人对这个问题有任何意见,我将不胜感激。也许我没有设置正确的东西,也许有另一个更快的解决方案

你期望的处理时间是多少?作为一个乐观主义者,我希望整个处理过程是1:1或1:2(15秒的视频处理需要30秒)。我在问能不能快点。如果不能,这就是生活…当你想抓取图像时,你是否每次都初始化并启动帧抓取器?不,我只初始化并启动每个视频文件一次。我已经分析了应用程序,设置帧时间和抓取花费的时间最多。我也有同样的问题,现在正在寻找替代解决方案,我尝试使用setDataSource(),但在某些设备上失败。如果我找到其他解决方案,我会告诉你的。