opencv4android 3.1.0如何使用VideoCapture 处理sd卡视频文件?

coderSkyChen 2016-01-14 05:21:39
RT,eclipse提示我说在native层找不到videocapture的实现,难道是3.1.0的版本上不支持从sd卡读取视频?
如果真的那样的话,我又该如何读取sd卡的视频,并且把每一帧转化为Mat进行处理呢?
对android不太熟悉,请教大家啦!
...全文
711 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
QQ515311445 2019-02-18
  • 打赏
  • 举报
回复
引用 14 楼 CodeLike 的回复:
[quote=引用 13 楼 QQ515311445 的回复:] [quote=引用 12 楼 CodeLike 的回复:] [quote=引用 11 楼 QQ515311445 的回复:] [quote=引用 9 楼 CodeLike 的回复:] [quote=引用 7 楼 llxxhm 的回复:] [quote=引用 6 楼 llxxhm 的回复:] [quote=引用 5 楼 CV_Jason 的回复:] [quote=引用 4 楼 llxxhm 的回复:] [quote=引用 3 楼 CV_Jason 的回复:] OpenCV for Android录制视频的接口貌似不是VideoCapture,虽然你也能看到这个类的Java版,但是打开之后发现提供的是C++的接口,通过native引入C++代码。Android本身API是有录制视频的类的,如camera,而OpenCV for Android 提供的相关接口是 CameraBridgeViewBase以及相关接口,这些都是在官方文档的samples提到的。
CameraBridgeViewBase是操作摄像头的吧, 有没有操作mp4的?[/quote] 你的意思是读取一个mp4文件,然后进行操作?(比如转码,视频分析,运算?) 如果是这样的话,建议你用JNI,JNI中的VideoCapture是可以做这些的。 如果只是获取预览信息,比如通过Android Camera2 API获取视频,通过SurfaceView进行预览,可以用CameraBridgeViewBase这个接口进行操作。 从Android 设备获取视频帧,或者像C++一样获取视频流,貌似比较难搞,我目前也不是太清楚。推荐你仔细研读一下OpenCV中的CameraBridgeXXX的相关接口,基本上能用的东西都在这里。 如果还没有解决方案,那只能自己写底层了,和Android设备的底层打交道,听起来是一件痛苦的事[/quote] 是的, 我是要从mp4中拿到每一帧的数据, 在linux和windows上用VideoCapture是可以的, 在android上VideoCapture.open会返回false[/quote] android上我正是用的jni调用的VideoCapture[/quote] 不好意思,比较忙,打得错别字比较多,总之,用FFMPEG库肯定能解决问题,如果确定要用这个方案的话,建议你去看看雷神的FFMPEG库入门贴,很实用 据说是,纯Java的OpenCV也能解决问题,如果不是执着于复用C++代码,或者对运算效率有追求的话,不妨考虑一下?[/quote] jni用ffmpeg解码了,但解决一帧2160*1080的视频要四五十毫秒,太慢了[/quote] 处理数据的速度,C++ > Java >> JNI,如果你要做实时处理,需要频繁访问JNI接口,建议使用JNI Cache,速度会有所提升,但效果会引具体实现而异。 话说,这个问题是去年8月份的,你怎么现在还在搞?这个时间跨度有点大啊,项目很庞大的样子???……你是搞直播APP的?高并发?[/quote] 我搞全景拼接,中间搞了个windows和linux的版本,现在回头搞android,视频是直接在JNI解码并拼接的[/quote]
引用 13 楼 QQ515311445 的回复:
[quote=引用 12 楼 CodeLike 的回复:] [quote=引用 11 楼 QQ515311445 的回复:] [quote=引用 9 楼 CodeLike 的回复:] [quote=引用 7 楼 llxxhm 的回复:] [quote=引用 6 楼 llxxhm 的回复:] [quote=引用 5 楼 CV_Jason 的回复:] [quote=引用 4 楼 llxxhm 的回复:] [quote=引用 3 楼 CV_Jason 的回复:] OpenCV for Android录制视频的接口貌似不是VideoCapture,虽然你也能看到这个类的Java版,但是打开之后发现提供的是C++的接口,通过native引入C++代码。Android本身API是有录制视频的类的,如camera,而OpenCV for Android 提供的相关接口是CameraBridgeViewBase以及相关接口,这些都是在官方文档的samples提到的。
CameraBridgeViewBase是操作摄像头的吧, 有没有操作mp4的?[/quote] 你的意思是读取一个mp4文件,然后进行操作?(比如转码,视频分析,运算?) 如果是这样的话,建议你用JNI,JNI中的VideoCapture是可以做这些的。 如果只是获取预览信息,比如通过Android Camera2 API获取视频,通过SurfaceView进行预览,可以用CameraBridgeViewBase这个接口进行操作。 从Android 设备获取视频帧,或者像C++一样获取视频流,貌似比较难搞,我目前也不是太清楚。推荐你仔细研读一下OpenCV中的CameraBridgeXXX的相关接口,基本上能用的东西都在这里。 如果还没有解决方案,那只能自己写底层了,和Android设备的底层打交道,听起来是一件痛苦的事[/quote] 是的, 我是要从mp4中拿到每一帧的数据, 在linux和windows上用VideoCapture是可以的, 在android上VideoCapture.open会返回false[/quote] android上我正是用的jni调用的VideoCapture[/quote] 不好意思,比较忙,打得错别字比较多,总之,用FFMPEG库肯定能解决问题,如果确定要用这个方案的话,建议你去看看雷神的FFMPEG库入门贴,很实用 据说是,纯Java的OpenCV也能解决问题,如果不是执着于复用C++代码,或者对运算效率有追求的话,不妨考虑一下?[/quote] jni用ffmpeg解码了,但解决一帧2160*1080的视频要四五十毫秒,太慢了[/quote] 处理数据的速度,C++ > Java >> JNI,如果你要做实时处理,需要频繁访问JNI接口,建议使用JNI Cache,速度会有所提升,但效果会引具体实现而异。 话说,这个问题是去年8月份的,你怎么现在还在搞?这个时间跨度有点大啊,项目很庞大的样子???……你是搞直播APP的?高并发?[/quote] 我搞全景拼接,中间搞了个windows和linux的版本,现在回头搞android,视频是直接在JNI解码并拼接的[/quote] 大佬厉害了~Orz~[/quote] 搞定了,2160*1080的视频解码时间几乎为0了,YUV转RGB用了几毫秒,够快了
大山喵 2019-02-16
  • 打赏
  • 举报
回复
引用 13 楼 QQ515311445 的回复:
[quote=引用 12 楼 CodeLike 的回复:]
[quote=引用 11 楼 QQ515311445 的回复:]
[quote=引用 9 楼 CodeLike 的回复:]
[quote=引用 7 楼 llxxhm 的回复:]
[quote=引用 6 楼 llxxhm 的回复:]
[quote=引用 5 楼 CV_Jason 的回复:]
[quote=引用 4 楼 llxxhm 的回复:]
[quote=引用 3 楼 CV_Jason 的回复:]
OpenCV for Android录制视频的接口貌似不是VideoCapture,虽然你也能看到这个类的Java版,但是打开之后发现提供的是C++的接口,通过native引入C++代码。Android本身API是有录制视频的类的,如camera,而OpenCV for Android 提供的相关接口是
CameraBridgeViewBase以及相关接口,这些都是在官方文档的samples提到的。

CameraBridgeViewBase是操作摄像头的吧, 有没有操作mp4的?[/quote]

你的意思是读取一个mp4文件,然后进行操作?(比如转码,视频分析,运算?)

如果是这样的话,建议你用JNI,JNI中的VideoCapture是可以做这些的。

如果只是获取预览信息,比如通过Android Camera2 API获取视频,通过SurfaceView进行预览,可以用CameraBridgeViewBase这个接口进行操作。

从Android 设备获取视频帧,或者像C++一样获取视频流,貌似比较难搞,我目前也不是太清楚。推荐你仔细研读一下OpenCV中的CameraBridgeXXX的相关接口,基本上能用的东西都在这里。

如果还没有解决方案,那只能自己写底层了,和Android设备的底层打交道,听起来是一件痛苦的事[/quote]
是的, 我是要从mp4中拿到每一帧的数据, 在linux和windows上用VideoCapture是可以的, 在android上VideoCapture.open会返回false[/quote]
android上我正是用的jni调用的VideoCapture[/quote]

不好意思,比较忙,打得错别字比较多,总之,用FFMPEG库肯定能解决问题,如果确定要用这个方案的话,建议你去看看雷神的FFMPEG库入门贴,很实用

据说是,纯Java的OpenCV也能解决问题,如果不是执着于复用C++代码,或者对运算效率有追求的话,不妨考虑一下?[/quote]
jni用ffmpeg解码了,但解决一帧2160*1080的视频要四五十毫秒,太慢了[/quote]
处理数据的速度,C++ > Java >> JNI,如果你要做实时处理,需要频繁访问JNI接口,建议使用JNI Cache,速度会有所提升,但效果会引具体实现而异。

话说,这个问题是去年8月份的,你怎么现在还在搞?这个时间跨度有点大啊,项目很庞大的样子???……你是搞直播APP的?高并发?[/quote]
我搞全景拼接,中间搞了个windows和linux的版本,现在回头搞android,视频是直接在JNI解码并拼接的[/quote]

引用 13 楼 QQ515311445 的回复:
[quote=引用 12 楼 CodeLike 的回复:]
[quote=引用 11 楼 QQ515311445 的回复:]
[quote=引用 9 楼 CodeLike 的回复:]
[quote=引用 7 楼 llxxhm 的回复:]
[quote=引用 6 楼 llxxhm 的回复:]
[quote=引用 5 楼 CV_Jason 的回复:]
[quote=引用 4 楼 llxxhm 的回复:]
[quote=引用 3 楼 CV_Jason 的回复:]
OpenCV for Android录制视频的接口貌似不是VideoCapture,虽然你也能看到这个类的Java版,但是打开之后发现提供的是C++的接口,通过native引入C++代码。Android本身API是有录制视频的类的,如camera,而OpenCV for Android 提供的相关接口是CameraBridgeViewBase以及相关接口,这些都是在官方文档的samples提到的。

CameraBridgeViewBase是操作摄像头的吧, 有没有操作mp4的?[/quote]

你的意思是读取一个mp4文件,然后进行操作?(比如转码,视频分析,运算?)

如果是这样的话,建议你用JNI,JNI中的VideoCapture是可以做这些的。

如果只是获取预览信息,比如通过Android Camera2 API获取视频,通过SurfaceView进行预览,可以用CameraBridgeViewBase这个接口进行操作。

从Android 设备获取视频帧,或者像C++一样获取视频流,貌似比较难搞,我目前也不是太清楚。推荐你仔细研读一下OpenCV中的CameraBridgeXXX的相关接口,基本上能用的东西都在这里。

如果还没有解决方案,那只能自己写底层了,和Android设备的底层打交道,听起来是一件痛苦的事[/quote]
是的, 我是要从mp4中拿到每一帧的数据, 在linux和windows上用VideoCapture是可以的, 在android上VideoCapture.open会返回false[/quote]
android上我正是用的jni调用的VideoCapture[/quote]

不好意思,比较忙,打得错别字比较多,总之,用FFMPEG库肯定能解决问题,如果确定要用这个方案的话,建议你去看看雷神的FFMPEG库入门贴,很实用

据说是,纯Java的OpenCV也能解决问题,如果不是执着于复用C++代码,或者对运算效率有追求的话,不妨考虑一下?[/quote]
jni用ffmpeg解码了,但解决一帧2160*1080的视频要四五十毫秒,太慢了[/quote]
处理数据的速度,C++ > Java >> JNI,如果你要做实时处理,需要频繁访问JNI接口,建议使用JNI Cache,速度会有所提升,但效果会引具体实现而异。

话说,这个问题是去年8月份的,你怎么现在还在搞?这个时间跨度有点大啊,项目很庞大的样子???……你是搞直播APP的?高并发?[/quote]
我搞全景拼接,中间搞了个windows和linux的版本,现在回头搞android,视频是直接在JNI解码并拼接的[/quote]

大佬厉害了~Orz~
QQ515311445 2019-02-15
  • 打赏
  • 举报
回复
引用 12 楼 CodeLike 的回复:
[quote=引用 11 楼 QQ515311445 的回复:] [quote=引用 9 楼 CodeLike 的回复:] [quote=引用 7 楼 llxxhm 的回复:] [quote=引用 6 楼 llxxhm 的回复:] [quote=引用 5 楼 CV_Jason 的回复:] [quote=引用 4 楼 llxxhm 的回复:] [quote=引用 3 楼 CV_Jason 的回复:] OpenCV for Android录制视频的接口貌似不是VideoCapture,虽然你也能看到这个类的Java版,但是打开之后发现提供的是C++的接口,通过native引入C++代码。Android本身API是有录制视频的类的,如camera,而OpenCV for Android 提供的相关接口是CameraBridgeViewBase以及相关接口,这些都是在官方文档的samples提到的。
CameraBridgeViewBase是操作摄像头的吧, 有没有操作mp4的?[/quote] 你的意思是读取一个mp4文件,然后进行操作?(比如转码,视频分析,运算?) 如果是这样的话,建议你用JNI,JNI中的VideoCapture是可以做这些的。 如果只是获取预览信息,比如通过Android Camera2 API获取视频,通过SurfaceView进行预览,可以用CameraBridgeViewBase这个接口进行操作。 从Android 设备获取视频帧,或者像C++一样获取视频流,貌似比较难搞,我目前也不是太清楚。推荐你仔细研读一下OpenCV中的CameraBridgeXXX的相关接口,基本上能用的东西都在这里。 如果还没有解决方案,那只能自己写底层了,和Android设备的底层打交道,听起来是一件痛苦的事[/quote] 是的, 我是要从mp4中拿到每一帧的数据, 在linux和windows上用VideoCapture是可以的, 在android上VideoCapture.open会返回false[/quote] android上我正是用的jni调用的VideoCapture[/quote] 不好意思,比较忙,打得错别字比较多,总之,用FFMPEG库肯定能解决问题,如果确定要用这个方案的话,建议你去看看雷神的FFMPEG库入门贴,很实用 据说是,纯Java的OpenCV也能解决问题,如果不是执着于复用C++代码,或者对运算效率有追求的话,不妨考虑一下?[/quote] jni用ffmpeg解码了,但解决一帧2160*1080的视频要四五十毫秒,太慢了[/quote] 处理数据的速度,C++ > Java >> JNI,如果你要做实时处理,需要频繁访问JNI接口,建议使用JNI Cache,速度会有所提升,但效果会引具体实现而异。 话说,这个问题是去年8月份的,你怎么现在还在搞?这个时间跨度有点大啊,项目很庞大的样子???……你是搞直播APP的?高并发?[/quote] 我搞全景拼接,中间搞了个windows和linux的版本,现在回头搞android,视频是直接在JNI解码并拼接的
大山喵 2019-02-15
  • 打赏
  • 举报
回复
引用 11 楼 QQ515311445 的回复:
[quote=引用 9 楼 CodeLike 的回复:]
[quote=引用 7 楼 llxxhm 的回复:]
[quote=引用 6 楼 llxxhm 的回复:]
[quote=引用 5 楼 CV_Jason 的回复:]
[quote=引用 4 楼 llxxhm 的回复:]
[quote=引用 3 楼 CV_Jason 的回复:]
OpenCV for Android录制视频的接口貌似不是VideoCapture,虽然你也能看到这个类的Java版,但是打开之后发现提供的是C++的接口,通过native引入C++代码。Android本身API是有录制视频的类的,如camera,而OpenCV for Android 提供的相关接口是CameraBridgeViewBase以及相关接口,这些都是在官方文档的samples提到的。

CameraBridgeViewBase是操作摄像头的吧, 有没有操作mp4的?[/quote]

你的意思是读取一个mp4文件,然后进行操作?(比如转码,视频分析,运算?)

如果是这样的话,建议你用JNI,JNI中的VideoCapture是可以做这些的。

如果只是获取预览信息,比如通过Android Camera2 API获取视频,通过SurfaceView进行预览,可以用CameraBridgeViewBase这个接口进行操作。

从Android 设备获取视频帧,或者像C++一样获取视频流,貌似比较难搞,我目前也不是太清楚。推荐你仔细研读一下OpenCV中的CameraBridgeXXX的相关接口,基本上能用的东西都在这里。

如果还没有解决方案,那只能自己写底层了,和Android设备的底层打交道,听起来是一件痛苦的事[/quote]
是的, 我是要从mp4中拿到每一帧的数据, 在linux和windows上用VideoCapture是可以的, 在android上VideoCapture.open会返回false[/quote]
android上我正是用的jni调用的VideoCapture[/quote]

不好意思,比较忙,打得错别字比较多,总之,用FFMPEG库肯定能解决问题,如果确定要用这个方案的话,建议你去看看雷神的FFMPEG库入门贴,很实用

据说是,纯Java的OpenCV也能解决问题,如果不是执着于复用C++代码,或者对运算效率有追求的话,不妨考虑一下?[/quote]
jni用ffmpeg解码了,但解决一帧2160*1080的视频要四五十毫秒,太慢了[/quote]
处理数据的速度,C++ > Java >> JNI,如果你要做实时处理,需要频繁访问JNI接口,建议使用JNI Cache,速度会有所提升,但效果会引具体实现而异。

话说,这个问题是去年8月份的,你怎么现在还在搞?这个时间跨度有点大啊,项目很庞大的样子???……你是搞直播APP的?高并发?
QQ515311445 2019-02-15
  • 打赏
  • 举报
回复
引用 9 楼 CodeLike 的回复:
[quote=引用 7 楼 llxxhm 的回复:] [quote=引用 6 楼 llxxhm 的回复:] [quote=引用 5 楼 CV_Jason 的回复:] [quote=引用 4 楼 llxxhm 的回复:] [quote=引用 3 楼 CV_Jason 的回复:] OpenCV for Android录制视频的接口貌似不是VideoCapture,虽然你也能看到这个类的Java版,但是打开之后发现提供的是C++的接口,通过native引入C++代码。Android本身API是有录制视频的类的,如camera,而OpenCV for Android 提供的相关接口是CameraBridgeViewBase以及相关接口,这些都是在官方文档的samples提到的。
CameraBridgeViewBase是操作摄像头的吧, 有没有操作mp4的?[/quote] 你的意思是读取一个mp4文件,然后进行操作?(比如转码,视频分析,运算?) 如果是这样的话,建议你用JNI,JNI中的VideoCapture是可以做这些的。 如果只是获取预览信息,比如通过Android Camera2 API获取视频,通过SurfaceView进行预览,可以用CameraBridgeViewBase这个接口进行操作。 从Android 设备获取视频帧,或者像C++一样获取视频流,貌似比较难搞,我目前也不是太清楚。推荐你仔细研读一下OpenCV中的CameraBridgeXXX的相关接口,基本上能用的东西都在这里。 如果还没有解决方案,那只能自己写底层了,和Android设备的底层打交道,听起来是一件痛苦的事[/quote] 是的, 我是要从mp4中拿到每一帧的数据, 在linux和windows上用VideoCapture是可以的, 在android上VideoCapture.open会返回false[/quote] android上我正是用的jni调用的VideoCapture[/quote] 不好意思,比较忙,打得错别字比较多,总之,用FFMPEG库肯定能解决问题,如果确定要用这个方案的话,建议你去看看雷神的FFMPEG库入门贴,很实用 据说是,纯Java的OpenCV也能解决问题,如果不是执着于复用C++代码,或者对运算效率有追求的话,不妨考虑一下?[/quote] jni用ffmpeg解码了,但解决一帧2160*1080的视频要四五十毫秒,太慢了
QQ515311445 2018-08-23
  • 打赏
  • 举报
回复
引用 9 楼 CV_Jason 的回复:
[quote=引用 7 楼 llxxhm 的回复:]
[quote=引用 6 楼 llxxhm 的回复:]
[quote=引用 5 楼 CV_Jason 的回复:]
[quote=引用 4 楼 llxxhm 的回复:]
[quote=引用 3 楼 CV_Jason 的回复:]
OpenCV for Android录制视频的接口貌似不是VideoCapture,虽然你也能看到这个类的Java版,但是打开之后发现提供的是C++的接口,通过native引入C++代码。Android本身API是有录制视频的类的,如camera,而OpenCV for Android 提供的相关接口是CameraBridgeViewBase以及相关接口,这些都是在官方文档的samples提到的。

CameraBridgeViewBase是操作摄像头的吧, 有没有操作mp4的?[/quote]

你的意思是读取一个mp4文件,然后进行操作?(比如转码,视频分析,运算?)

如果是这样的话,建议你用JNI,JNI中的VideoCapture是可以做这些的。

如果只是获取预览信息,比如通过Android Camera2 API获取视频,通过SurfaceView进行预览,可以用CameraBridgeViewBase这个接口进行操作。

从Android 设备获取视频帧,或者像C++一样获取视频流,貌似比较难搞,我目前也不是太清楚。推荐你仔细研读一下OpenCV中的CameraBridgeXXX的相关接口,基本上能用的东西都在这里。

如果还没有解决方案,那只能自己写底层了,和Android设备的底层打交道,听起来是一件痛苦的事[/quote]
是的, 我是要从mp4中拿到每一帧的数据, 在linux和windows上用VideoCapture是可以的, 在android上VideoCapture.open会返回false[/quote]
android上我正是用的jni调用的VideoCapture[/quote]

不好意思,比较忙,打得错别字比较多,总之,用FFMPEG库肯定能解决问题,如果确定要用这个方案的话,建议你去看看雷神的FFMPEG库入门贴,很实用

据说是,纯Java的OpenCV也能解决问题,如果不是执着于复用C++代码,或者对运算效率有追求的话,不妨考虑一下?[/quote]
要用C++的, 目前想找个eclipse能用的demo看看
大山喵 2018-08-22
  • 打赏
  • 举报
回复
引用 7 楼 llxxhm 的回复:
[quote=引用 6 楼 llxxhm 的回复:]
[quote=引用 5 楼 CV_Jason 的回复:]
[quote=引用 4 楼 llxxhm 的回复:]
[quote=引用 3 楼 CV_Jason 的回复:]
OpenCV for Android录制视频的接口貌似不是VideoCapture,虽然你也能看到这个类的Java版,但是打开之后发现提供的是C++的接口,通过native引入C++代码。Android本身API是有录制视频的类的,如camera,而OpenCV for Android 提供的相关接口是CameraBridgeViewBase以及相关接口,这些都是在官方文档的samples提到的。

CameraBridgeViewBase是操作摄像头的吧, 有没有操作mp4的?[/quote]

你的意思是读取一个mp4文件,然后进行操作?(比如转码,视频分析,运算?)

如果是这样的话,建议你用JNI,JNI中的VideoCapture是可以做这些的。

如果只是获取预览信息,比如通过Android Camera2 API获取视频,通过SurfaceView进行预览,可以用CameraBridgeViewBase这个接口进行操作。

从Android 设备获取视频帧,或者像C++一样获取视频流,貌似比较难搞,我目前也不是太清楚。推荐你仔细研读一下OpenCV中的CameraBridgeXXX的相关接口,基本上能用的东西都在这里。

如果还没有解决方案,那只能自己写底层了,和Android设备的底层打交道,听起来是一件痛苦的事[/quote]
是的, 我是要从mp4中拿到每一帧的数据, 在linux和windows上用VideoCapture是可以的, 在android上VideoCapture.open会返回false[/quote]
android上我正是用的jni调用的VideoCapture[/quote]

不好意思,比较忙,打得错别字比较多,总之,用FFMPEG库肯定能解决问题,如果确定要用这个方案的话,建议你去看看雷神的FFMPEG库入门贴,很实用

据说是,纯Java的OpenCV也能解决问题,如果不是执着于复用C++代码,或者对运算效率有追求的话,不妨考虑一下?
大山喵 2018-08-22
  • 打赏
  • 举报
回复
引用 7 楼 llxxhm 的回复:
[quote=引用 6 楼 llxxhm 的回复:]
[quote=引用 5 楼 CV_Jason 的回复:]
[quote=引用 4 楼 llxxhm 的回复:]
[quote=引用 3 楼 CV_Jason 的回复:]
OpenCV for Android录制视频的接口貌似不是VideoCapture,虽然你也能看到这个类的Java版,但是打开之后发现提供的是C++的接口,通过native引入C++代码。Android本身API是有录制视频的类的,如camera,而OpenCV for Android 提供的相关接口是CameraBridgeViewBase以及相关接口,这些都是在官方文档的samples提到的。

CameraBridgeViewBase是操作摄像头的吧, 有没有操作mp4的?[/quote]

你的意思是读取一个mp4文件,然后进行操作?(比如转码,视频分析,运算?)

如果是这样的话,建议你用JNI,JNI中的VideoCapture是可以做这些的。

如果只是获取预览信息,比如通过Android Camera2 API获取视频,通过SurfaceView进行预览,可以用CameraBridgeViewBase这个接口进行操作。

从Android 设备获取视频帧,或者像C++一样获取视频流,貌似比较难搞,我目前也不是太清楚。推荐你仔细研读一下OpenCV中的CameraBridgeXXX的相关接口,基本上能用的东西都在这里。

如果还没有解决方案,那只能自己写底层了,和Android设备的底层打交道,听起来是一件痛苦的事[/quote]
是的, 我是要从mp4中拿到每一帧的数据, 在linux和windows上用VideoCapture是可以的, 在android上VideoCapture.open会返回false[/quote]
android上我正是用的jni调用的VideoCapture[/quote]

mp4不可以,你这个问题我们当初遇到过,最用的解决方案是在JNI里面引入FFMPEG库,进行转码
OpenCV for Anroid 的JNI部分,比较弱,和桌面版的有差距,具体表现为,做面板的VideoCapture是集成FFMPEG,所以不存在读不了视频的情况,但是移动端的.so库的libopencv_videoio.so(记不清了,貌似是这个吧)就没有。所以你要手动用FFMPEG……

不知道最新版的OpenCV 是否解决了这个问题,我们去年用的是OpenCV3.3
QQ515311445 2018-08-22
  • 打赏
  • 举报
回复
引用 6 楼 llxxhm 的回复:
[quote=引用 5 楼 CV_Jason 的回复:]
[quote=引用 4 楼 llxxhm 的回复:]
[quote=引用 3 楼 CV_Jason 的回复:]
OpenCV for Android录制视频的接口貌似不是VideoCapture,虽然你也能看到这个类的Java版,但是打开之后发现提供的是C++的接口,通过native引入C++代码。Android本身API是有录制视频的类的,如camera,而OpenCV for Android 提供的相关接口是CameraBridgeViewBase以及相关接口,这些都是在官方文档的samples提到的。

CameraBridgeViewBase是操作摄像头的吧, 有没有操作mp4的?[/quote]

你的意思是读取一个mp4文件,然后进行操作?(比如转码,视频分析,运算?)

如果是这样的话,建议你用JNI,JNI中的VideoCapture是可以做这些的。

如果只是获取预览信息,比如通过Android Camera2 API获取视频,通过SurfaceView进行预览,可以用CameraBridgeViewBase这个接口进行操作。

从Android 设备获取视频帧,或者像C++一样获取视频流,貌似比较难搞,我目前也不是太清楚。推荐你仔细研读一下OpenCV中的CameraBridgeXXX的相关接口,基本上能用的东西都在这里。

如果还没有解决方案,那只能自己写底层了,和Android设备的底层打交道,听起来是一件痛苦的事[/quote]
是的, 我是要从mp4中拿到每一帧的数据, 在linux和windows上用VideoCapture是可以的, 在android上VideoCapture.open会返回false[/quote]
android上我正是用的jni调用的VideoCapture
QQ515311445 2018-08-22
  • 打赏
  • 举报
回复
引用 5 楼 CV_Jason 的回复:
[quote=引用 4 楼 llxxhm 的回复:]
[quote=引用 3 楼 CV_Jason 的回复:]
OpenCV for Android录制视频的接口貌似不是VideoCapture,虽然你也能看到这个类的Java版,但是打开之后发现提供的是C++的接口,通过native引入C++代码。Android本身API是有录制视频的类的,如camera,而OpenCV for Android 提供的相关接口是CameraBridgeViewBase以及相关接口,这些都是在官方文档的samples提到的。

CameraBridgeViewBase是操作摄像头的吧, 有没有操作mp4的?[/quote]

你的意思是读取一个mp4文件,然后进行操作?(比如转码,视频分析,运算?)

如果是这样的话,建议你用JNI,JNI中的VideoCapture是可以做这些的。

如果只是获取预览信息,比如通过Android Camera2 API获取视频,通过SurfaceView进行预览,可以用CameraBridgeViewBase这个接口进行操作。

从Android 设备获取视频帧,或者像C++一样获取视频流,貌似比较难搞,我目前也不是太清楚。推荐你仔细研读一下OpenCV中的CameraBridgeXXX的相关接口,基本上能用的东西都在这里。

如果还没有解决方案,那只能自己写底层了,和Android设备的底层打交道,听起来是一件痛苦的事[/quote]
是的, 我是要从mp4中拿到每一帧的数据, 在linux和windows上用VideoCapture是可以的, 在android上VideoCapture.open会返回false
大山喵 2018-08-22
  • 打赏
  • 举报
回复
引用 4 楼 llxxhm 的回复:
[quote=引用 3 楼 CV_Jason 的回复:]
OpenCV for Android录制视频的接口貌似不是VideoCapture,虽然你也能看到这个类的Java版,但是打开之后发现提供的是C++的接口,通过native引入C++代码。Android本身API是有录制视频的类的,如camera,而OpenCV for Android 提供的相关接口是CameraBridgeViewBase以及相关接口,这些都是在官方文档的samples提到的。

CameraBridgeViewBase是操作摄像头的吧, 有没有操作mp4的?[/quote]

你的意思是读取一个mp4文件,然后进行操作?(比如转码,视频分析,运算?)

如果是这样的话,建议你用JNI,JNI中的VideoCapture是可以做这些的。

如果只是获取预览信息,比如通过Android Camera2 API获取视频,通过SurfaceView进行预览,可以用CameraBridgeViewBase这个接口进行操作。

从Android 设备获取视频帧,或者像C++一样获取视频流,貌似比较难搞,我目前也不是太清楚。推荐你仔细研读一下OpenCV中的CameraBridgeXXX的相关接口,基本上能用的东西都在这里。

如果还没有解决方案,那只能自己写底层了,和Android设备的底层打交道,听起来是一件痛苦的事
QQ515311445 2018-08-22
  • 打赏
  • 举报
回复
引用 3 楼 CV_Jason 的回复:
OpenCV for Android录制视频的接口貌似不是VideoCapture,虽然你也能看到这个类的Java版,但是打开之后发现提供的是C++的接口,通过native引入C++代码。Android本身API是有录制视频的类的,如camera,而OpenCV for Android 提供的相关接口是CameraBridgeViewBase以及相关接口,这些都是在官方文档的samples提到的。

CameraBridgeViewBase是操作摄像头的吧, 有没有操作mp4的?
大山喵 2017-11-01
  • 打赏
  • 举报
回复
OpenCV for Android录制视频的接口貌似不是VideoCapture,虽然你也能看到这个类的Java版,但是打开之后发现提供的是C++的接口,通过native引入C++代码。Android本身API是有录制视频的类的,如camera,而OpenCV for Android 提供的相关接口是CameraBridgeViewBase以及相关接口,这些都是在官方文档的samples提到的。
coderSkyChen 2016-09-16
  • 打赏
  • 举报
回复
后来就没继续搞了。。
姚贤武 2016-08-12
  • 打赏
  • 举报
回复
同问啊,楼主解决了吗

80,337

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧