opencv 提取视频信息(提取每帧 VS 按照时间提取)
2017-08-27 21:23
453 查看
opencv在开发win32平台开发视频应用时,可以用cvCaptureFromAVI方便提取中视频的信息
但是在Android中虽然有这个函数,但是用不了,根本不能用,google了好久才在opencv官网论坛发现是opencv本身对android支持不好的缘故
但是我又需要提取出每一帧的信息来计算待检测物体的移动速度
android SDK自带的MediaMetadataRetriever虽然可以用,但是只能按照时间提取出对应的帧,
有人也遇到类似的问题:https://stackoverflow.com/questions/24199291/process-video-frame-by-frame-in-opencv-on-android
网上也有说用FFpeg来提取每帧,但是被配置过程吓到了。。。网上也流传很复杂
也有说用JavaCV(好像是集成了FFpeg)做的(http://blog.csdn.net/u011270282/article/details/50389012),新建个工程测试了下(http://blog.csdn.net/zgljl2012/article/details/48193859)OK,但是再在opencv环境里面再加JavaCV就蛋疼了,每次编译都会自动把libs下JavaCV添加内的so文件自动删除(与opencv配置的mk文件有关),虽然能搜到一些不删除JavaCV的so文件的解决方案,但是最终没能如愿
转念一想,提取出每帧,不还是要根据帧率换算成时间,再计算速度吗?为什么不安固定时间间隔提取呢?这样的话MediaMetadataRetriever就完全OK了
至此,可以提取视频帧处理了
但是又遇到问题,同样一个MP4文件,用movie maker截取一段后(120k)可以用MediaMetadataRetriever处理,原始的视频(6M)却报null pointer exception,也许是视频大小的问题,也许是movie maker处理后视频某些参数发生变化的原因,总之是实用性不强的原因
查了下确实,所以GitHub才有FFmpegMediaMetadataRetriever的出现,但是官网上的配置写的比较模糊,一些博客上说只要加压把so文件添加libs就ok,而下载地址给的是老版本的下载(新版本好像不直接给libs了),链接失效了,无奈,只好从GitHub中的branch中找提交历史(https://www.zhihu.com/question/20080881),最后尼玛终于可以读取了
http://answers.opencv.org/question/19593/how-to-record-video-from-videocamera-in-android/ http://answers.opencv.org/question/34504/video-processing-i 4000
n-android/
https://stackoverflow.com/questions/3688993/encode-a-series-of-images-into-a-video
_______________________________________________________________________________________________________________
之前so动态库被删除的问题在这里得到解答:
http://bbs.csdn.net/topics/390397961?page=1#post-395668767 http://blog.csdn.net/zhandoushi1982/article/details/5316669
了解一下mk文件的原理就好了,但是也不太想对JavaCV的每个文件在mk文件中写一遍。。。。
用FFmpegMediaMetadataRetriever现在也出现个问题,大的视频可以提取图片了,小的视频有不可以了,提取出来的duration是0;在Github的issue有人提了类似的问题,貌似还没有fix??
Anyway,我就多加层判断嘛!如果FFmpegMediaMetadataRetriever不能就交给MediaMetadataRetriever
但是在Android中虽然有这个函数,但是用不了,根本不能用,google了好久才在opencv官网论坛发现是opencv本身对android支持不好的缘故
但是我又需要提取出每一帧的信息来计算待检测物体的移动速度
android SDK自带的MediaMetadataRetriever虽然可以用,但是只能按照时间提取出对应的帧,
有人也遇到类似的问题:https://stackoverflow.com/questions/24199291/process-video-frame-by-frame-in-opencv-on-android
网上也有说用FFpeg来提取每帧,但是被配置过程吓到了。。。网上也流传很复杂
也有说用JavaCV(好像是集成了FFpeg)做的(http://blog.csdn.net/u011270282/article/details/50389012),新建个工程测试了下(http://blog.csdn.net/zgljl2012/article/details/48193859)OK,但是再在opencv环境里面再加JavaCV就蛋疼了,每次编译都会自动把libs下JavaCV添加内的so文件自动删除(与opencv配置的mk文件有关),虽然能搜到一些不删除JavaCV的so文件的解决方案,但是最终没能如愿
转念一想,提取出每帧,不还是要根据帧率换算成时间,再计算速度吗?为什么不安固定时间间隔提取呢?这样的话MediaMetadataRetriever就完全OK了
至此,可以提取视频帧处理了
但是又遇到问题,同样一个MP4文件,用movie maker截取一段后(120k)可以用MediaMetadataRetriever处理,原始的视频(6M)却报null pointer exception,也许是视频大小的问题,也许是movie maker处理后视频某些参数发生变化的原因,总之是实用性不强的原因
查了下确实,所以GitHub才有FFmpegMediaMetadataRetriever的出现,但是官网上的配置写的比较模糊,一些博客上说只要加压把so文件添加libs就ok,而下载地址给的是老版本的下载(新版本好像不直接给libs了),链接失效了,无奈,只好从GitHub中的branch中找提交历史(https://www.zhihu.com/question/20080881),最后尼玛终于可以读取了
http://answers.opencv.org/question/19593/how-to-record-video-from-videocamera-in-android/ http://answers.opencv.org/question/34504/video-processing-i 4000
n-android/
https://stackoverflow.com/questions/3688993/encode-a-series-of-images-into-a-video
_______________________________________________________________________________________________________________
之前so动态库被删除的问题在这里得到解答:
http://bbs.csdn.net/topics/390397961?page=1#post-395668767 http://blog.csdn.net/zhandoushi1982/article/details/5316669
了解一下mk文件的原理就好了,但是也不太想对JavaCV的每个文件在mk文件中写一遍。。。。
用FFmpegMediaMetadataRetriever现在也出现个问题,大的视频可以提取图片了,小的视频有不可以了,提取出来的duration是0;在Github的issue有人提了类似的问题,貌似还没有fix??
Anyway,我就多加层判断嘛!如果FFmpegMediaMetadataRetriever不能就交给MediaMetadataRetriever
相关文章推荐
- opencv提取视频中人物的边缘信息
- 【计算机视觉】OpenCV读取视频获取时间戳等信息(PS:经测试并不是时间戳,与FFMPEG时间戳不一样)
- 基于opencv+vs视频运动区域提取
- OpenCV学习之视频读取与帧的提取、显示及保存
- VS2013 / MFC + OpenCV 2.4.9实现视频的播放暂停和结束
- OpenCV提取显示一张图片(或者视频)的R,G,B颜色分量
- 用opencv查看视频信息(视频的宽度、高度、帧率和总得帧数)
- HEVC/3D-HEVC视频编码中LCU分割信息提取及保留
- opencv2.4.9+vs2013中的等大图像的相似度匹配运算时间
- 衡量视频序列特性的TI(时间信息)和SI(空间信息)
- android提取视频多张图片和视频信息
- Gps与时间信息的提取
- 视频特性TI(时间信息)和SI(空间信息)的计算工具:TIandSI-压缩码流版
- KINECT+opencv(2)基于骨骼信息对视频进行动作识别
- 使用openCv从avi视频提取照片图片
- 视频特性TI(时间信息)和SI(空间信息)的计算工具:TIandSI
- 用OpenCV查看视频信息(视频的宽度、高度、帧率和总帧数)
- opencv查看视频信息
- Qt+OpenCV以时间命名视频名字
- android提取视频多张图片和视频信息实例