android studio 用 Javacv 读取视频流
来源:互联网 发布:阿里云ip地址 编辑:程序博客网 时间:2024/04/29 12:15
项目需求
按帧读取视频,修改帧,存储视频
javacv项目地址
bytedeco-javacv
android studio + javacv环境搭建
packagingOptions{
exclude ‘META-INF/maven/org.bytedeco.javacpp-presets/opencv/pom.properties’
exclude ‘META-INF/maven/org.bytedeco.javacpp-presets/ffmpeg/pom.properties’
exclude ‘META-INF/maven/org.bytedeco.javacpp-presets/opencv/pom.xml’
exclude ‘META-INF/maven/org.bytedeco.javacpp-presets/ffmpeg/pom.xml’
}
compile ‘org.bytedeco:javacv:1.1’
compile ‘org.bytedeco.javacpp-presets:opencv:3.0.0-1.1:android-arm’
compile ‘org.bytedeco.javacpp-presets:ffmpeg:2.8.1-1.1:android-arm’
准备工作完成开始开发
//初始化FrameGrabber videoGrabber = new FFmpegFrameGrabber(path);videoGrabber.start();//获取视频源的参数double frameRate = videoGrabber.getFrameRate();int sampleRate = videoGrabber.getSampleRate();Frame frame;int count = 0;String ffmpeg_link = Environment.getExternalStorageDirectory() .getAbsolutePath() + "/" + "obama.avi";File result = new File(ffmpeg_link);if (result.exists()) result.delete();if (recorder == null) { //初始化recorder recorder = new FFmpegFrameRecorder(result, videoGrabber.getImageWidth(), videoGrabber.getImageHeight(), videoGrabber.getAudioChannels()); recorder.setFormat("avi"); recorder.setSampleRate(sampleRate); // Set in the surface changed method recorder.setFrameRate(frameRate); recorder.start();}while (true) { //获取下一帧数据 frame = videoGrabber.grabFrame(); if (frame == null) break; if (frame.image == null) continue; //转码 Frame ->Bitmap 操作Bitmap完成后Bitmap->Frame AndroidFrameConverter bitmapConverter = new AndroidFrameConverter(); Bitmap currentImage = bitmapConverter.convert(frame); currentImage = initScence(currentImage);//操作Bitmap, Frame frame1 = bitmapConverter.convert(); //写入recorder recorder.record(frame1);}
遇到的错误解决
错误列表
- java.lang.UnsatisfiedLinkError: org.bytedeco.javacpp.avutil:指定arm平台的opencv和ffmpeg的库文件
- java.lang.UnsatisfiedLinkError: org.bytedeco.javacpp.avcodec:不能使用android sdk23的api,我改了targetSdkVersion: 22
- Error:A problem occurred configuring project ‘:testjavacv’.
Could not find javacpp-presets-Mac OS X-x86_64.jar (org.bytedeco:javacpp-presets:1.2).
Searched in the following locations:
https://jcenter.bintray.com/org/bytedeco/javacpp-presets/1.2/javacpp-presets-1.2-Mac OS X-x86_64.jar
解决:
configurations {
all*.exclude group: ‘org.bytedeco’, module: ‘javacpp-presets’
}
标注
- javacv Frame转换成android Bitmap
AndroidFrameConverter bitmapConverter = new AndroidFrameConverter();Bitmap bitmap = bitmapConverter.convert(frame);Frame frame = bitmapConverter.convert(bitmap);
- javacv Frame、Mat和ToIplImage相互转换
FFmpegFrameGrabber grabber = new FFmpegFrameGrabber("video.mp4"); AndroidFrameConverter converterToBitmap = new AndroidFrameConverter(); OpenCVFrameConverter.ToMat converterToMat = new OpenCVFrameConverter.ToMat();//.ToIplImage // Grab an image Frame from the video file Frame frame = grabber.grab(); // Perform a shallow copy to represent frame as a Mat Mat mat = converterToMat.convert(frame); // Do some processing on mat with OpenCV Mat processedMat = ... // Convert processedMat back to a Frame frame = converterToMat.convert(processedMat); // Copy the data to a Bitmap for display or something Bitmap bitmap = converterToBitmap.convert(frame);
- android studio 用 Javacv 读取视频流
- 请问一下Android Studio如何配置JAVACV 0.8Javacv+2.4.9Opencv 万分感谢
- 借助JavaCV实现android手机查看PC摄像头实时视频
- javacv 视频转换
- JavaCV 读取Mat元素
- javacv调用webcam录制视频
- android+javaCV环境配置
- 【Android】Test JavaCV & OpenCV
- 【Android】JavaCV and OpenCV
- android如何读取视频
- Android Studio录制视频
- javacv
- javacv
- JavaCV
- javacv解码、录制视频,保存图片
- 使用JavaCV(ffmpeg)录制视频
- 使用JAVACV把图片合成视频
- javacv-ffmpeg播放视频里的音频
- Windows内核驱动中操作文件
- java IO类
- cocos2dx3.x+cocostudio多屏幕分辨率适配解决方案(干货)
- 数据结构-顺序栈
- [数据结构]Stack_Calculator(中序波兰式转后序波兰式)
- android studio 用 Javacv 读取视频流
- POJ 2718 Smallest Difference(dfs 全排列)
- 从零学习算法竞赛1: 变量交换
- 一个demo学习完RelativeLayout
- Kmp!!!
- centos安装pip
- Google Test(GTest)使用方法和源码解析——结果统计机制分析
- [数据结构]N-Queens Problem(recursion)
- 数据结构-链栈