Android OpenCV-如何使用jni读取视频文件?
我正在使用Android Opencv开发一个应用程序 我正在开发的这个应用程序提供了两种操作Android OpenCV-如何使用jni读取视频文件?,android,opencv,ffmpeg,java-native-interface,native,Android,Opencv,Ffmpeg,Java Native Interface,Native,我正在使用Android Opencv开发一个应用程序 我正在开发的这个应用程序提供了两种操作 使用本机函数将从相机读取的帧传递给Jni Mat.getNativeObjAddr(),并通过 javaCameraView的onCameraFrame()函数 它读取存储器中的一个视频剪辑,对每一帧进行相同的处理 作为#1,并通过onCameraFrame()返回结果图像 功能 首先,该功能的实现非常简单,如下所示,并且工作正常: @Override public Mat onCa
- 使用本机函数将从相机读取的帧传递给Jni Mat.getNativeObjAddr(),并通过 javaCameraView的onCameraFrame()函数
- 它读取存储器中的一个视频剪辑,对每一帧进行相同的处理 作为#1,并通过onCameraFrame()返回结果图像 功能
@Override
public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame)
{
if(inputFrame!=null){
Detect(inputFrame.rgba().getNativeObjAddr(), boardImage.getNativeObjAddr());
}
return boardImage;
}
}
但是,问题发生在第二次操作中。
据我所知,Java存储中的文件不能被jni读取
我已经通过谷歌搜索尝试了FFmpegMediaPlayer或MediaMetadataRetriever。但是,当将位图抓取到1920*1080图像的特定帧时,此元数据检索器提供的getFrameAtTime()函数平均耗时170ms。我要开发的是以每秒30帧的速度实时显示视频结果。在#1中,本机函数Detect()处理一帧大约需要2毫秒
基于这些原因,我想这样做
java将视频路径(例如:/storage/simulated/0/download/video.mp4)发送到jni,本机函数一次处理一帧视频,并在“onCameraFrame”上显示结果图像
有合适的方法吗?我期待着你的答复。谢谢大家! 如果你问,这是不是正确的方式,是的。您可以使用路径名在本机端工作。它将减少您的进程时间成倍增加。或者您需要解决如何将路径名发送到jni端的问题?@JavadKhan,真的吗?是否可以将视频路径名传递给jni并逐帧读取jni?如果这是可能的,并且您有解决方案,我希望通过电子邮件接收:sso99111@gmail.comIf你问,这是不是正确的方式,是的。您可以使用路径名在本机端工作。它将减少您的进程时间成倍增加。或者您需要解决如何将路径名发送到jni端的问题?@JavadKhan,真的吗?是否可以将视频路径名传递给jni并逐帧读取jni?如果这是可能的,并且您有解决方案,我希望通过电子邮件接收:sso99111@gmail.com