
我正在尝试使用javacv AndroidFrameConverter将大小为1280×720的帧转换为位图,并且转换需要很长时间.这是转换的示例代码.
FrameGrabber grabber = new FFmpegFrameGrabber(vIDeoUrl);frame = grabber.grab();AndroIDFrameConverter converter = new AndroIDFrameConverter();Bitmap originalBitmap = converter.convert(frame);还有其他比这更快的解决方案吗?
解决方法:
您可以使用此代码并根据需要更改过滤器.
public class Filterasync extends AsyncTask { private FFmpegFrameGrabber VIDEO_GRABBER; private FFmpegFrameRecorder vIDeoRecorder; private file file = new file(Environment.getExternalStorageDirectory() + "/Download/Abc.mp4"); private Context mContext; private FFmpegFrameFilter filter; private boolean isTrue = false; private ArrayList<String> vIDeoPaths; private file myDirectory; public Filterasync(Context context) { mContext = context; VIDEO_GRABBER = new FFmpegFrameGrabber(file); myDirectory = new file(Environment.getExternalStorageDirectory() + "/Folder/"); if (!myDirectory.exists()) { myDirectory.mkdirs(); } vIDeoPaths = new ArrayList<>(); } @OverrIDe protected voID onPreExecute() { super.onPreExecute(); } @OverrIDe protected Object doInBackground(Object[] params) { Frame tempVIDeoFrame; try { VIDEO_GRABBER.start(); initVIDeoRecorder(myDirectory + "/vIDeo" + System.currentTimeMillis() + ".mp4"); filter.start(); while (VIDEO_GRABBER.grab() != null) { tempVIDeoFrame = VIDEO_GRABBER.grabImage(); if (tempVIDeoFrame != null) { filter.push(tempVIDeoFrame); tempVIDeoFrame = filter.pull(); vIDeoRecorder.record(tempVIDeoFrame); } } vIDeoRecorder.stop(); filter.stop(); vIDeoRecorder.release(); VIDEO_GRABBER.stop(); VIDEO_GRABBER.release(); } catch (FrameGrabber.Exception e) { e.printstacktrace(); } catch (FrameRecorder.Exception e) { e.printstacktrace(); } catch (FrameFilter.Exception e) { e.printstacktrace(); } return null; } @OverrIDe protected voID onPostExecute(Object o) { super.onPostExecute(o); } private voID initVIDeoRecorder(String path) { try { filter = new FFmpegFrameFilter("transpose=clock ,crop=w=640:h=480:x=0:y=0", VIDEO_GRABBER.getimageWIDth(), VIDEO_GRABBER.getimageHeight()); vIDeoRecorder = FFmpegFrameRecorder.createDefault(path, VIDEO_GRABBER.getimageWIDth(), VIDEO_GRABBER.getimageHeight()); vIDeoRecorder.setAudioChannels(VIDEO_GRABBER.getAudioChannels()); vIDeoRecorder.start(); } catch (FrameRecorder.Exception e) { e.printstacktrace(); } }} 总结 以上是内存溢出为你收集整理的使用AndroidFrameConverter将javacv框架转换为位图全部内容,希望文章能够帮你解决使用AndroidFrameConverter将javacv框架转换为位图所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)