在Android中使用FFmpegFrameGrabber.grabImage()每次获取相同的帧
尝试使用javaCV、FFFmpegFramGrabber和save as jpg从视频文件中提取每个帧,每次都会得到相同的帧在Android中使用FFmpegFrameGrabber.grabImage()每次获取相同的帧,android,ffmpeg,javacv,Android,Ffmpeg,Javacv,尝试使用javaCV、FFFmpegFramGrabber和save as jpg从视频文件中提取每个帧,每次都会得到相同的帧 FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(cVideoFilePath+ "/" + "VID_20170211_132657.mp4"); try { AndroidFrameConverter convertToBitmap = new AndroidFrameConv
FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(cVideoFilePath+ "/" + "VID_20170211_132657.mp4");
try {
AndroidFrameConverter convertToBitmap = new AndroidFrameConverter();
grabber.start();
for (int i= 0; i< grabber.getFrameRate();i++){
frame1 = grabber.grabImage();
Bitmap bitmap = convertToBitmap.convert(frame1);
String date = simpleDateFormat.format(new Date());
File picfile = new File(file_name);
if (!picfile.exists()) {
try {
picfile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
FileOutputStream out = new FileOutputStream(picfile);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
out.flush();
out.close();
} catch (IOException ex) {
} finally {
}
}
FFmpegFrameGrabber grabber=新的FFmpegFrameGrabber(cVideoFilePath+“/”+“VID_20170211_132657.mp4”);
试一试{
AndroidFrameConverter convertToBitmap=新的AndroidFrameConverter();
grabber.start();
对于(int i=0;i
循环看起来是错误的。以下是该循环的预期结果:
int frame_count = grabber.getLengthInFrames();
for (int i=0; i<frame_count; i+=grabber.getFrameRate())
int frame_count=grabber.getLengthInFrames();
对于(int i=0;i循环看起来是错误的。以下是该循环的预期结果:
int frame_count = grabber.getLengthInFrames();
for (int i=0; i<frame_count; i+=grabber.getFrameRate())
int frame_count=grabber.getLengthInFrames();
对于(int i=0;我每次都会得到相同的帧,尽管当i的值按应有的方式递增时,但每次输出的图像都是相同的,不清楚如何生成文件名
。可能您没有为每个帧创建新文件。感谢Alex现在根据需要获得所有帧。但问题在于延迟,gett每秒仅捕获2帧。如果这不是实时流,则可能是您的过程造成的。尝试将捕获的帧“作为黑匣子”写入磁盘以进行估计(通过提取)将它们转换为位图然后再转换为jpeg所需的时间。每次仍然获得相同的帧,尽管当i的值按应有的方式递增时,但每次输出的图像都是相同的。不清楚如何生成文件名。\u name
。可能您没有为每个帧创建新文件。感谢Alex现在获得所有帧根据需要删除。但问题在于延迟,每秒仅获取2帧。如果这不是实时流,则可能是您的过程造成的。尝试将捕获的帧“作为黑匣子”写入磁盘,以估计(通过提取)将其转换为位图然后转换为jpeg所需的时间。