繁体   English   中英

android studio 有没有办法提取一个视频的所有帧?

[英]Is there any way to extract all the frames of a video in android studio?

我正在开发一个应用程序,我正在其中提取视频的所有帧。 我尝试了多种方法但无法获得任何结果。 那么有人可以建议如何做到这一点吗?

我在 android 工作室试过 OpenCV 和 MediaMetadataRetriever。

简单的答案,您可以使用FmpegMediaMetadataRetriever库轻松地做到这一点。

在模块应用程序下的 build.graddle 中添加这两行:

implementation 'com.github.wseemann:FFmpegMediaMetadataRetriever-core:1.0.19'
implementation 'com.github.wseemann:FFmpegMediaMetadataRetriever native:1.0.19'

同步您的项目。

用法:

FFmpegMediaMetadataRetriever mmr = new FFmpegMediaMetadataRetriever();
mmr.setDataSource(mUri);
mmr.extractMetadata(FFmpegMediaMetadataRetriever.METADATA_KEY_ALBUM);
mmr.extractMetadata(FFmpegMediaMetadataRetriever.METADATA_KEY_ARTIST;
// duration of the video
String time = retriever.extractMetadata(FFmpegMediaMetadataRetriever.METADATA_KEY_DURATION);
int duration = Integer.parseInt(time);
//frame every selected period
int period = 1000000//each 1 second will get 1 frame, if you want more precision, minimise the period 
int len = duration/period;
List<Bitmap> frames = ArrayList();

for(int i = 0; i<len; i++){
Bitmap frame = mmr.getFrameAtTime(i * period, FFmpegMediaMetadataRetriever.OPTION_CLOSEST); // frame at 2 seconds 
frames.add(frame);

}   
    mmr.release();

//here you can do what ever you want from the frames arraylist
for(Bitmap frame: frames){

   //here you can do what ever you want from the frame

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM