MediaMetadataRetriever.getFrameAtTime() returns only first frame

前端 未结 7 1575
不思量自难忘°
不思量自难忘° 2020-12-01 12:12

I have extracted frames from a video using MetadataRetriever, and have stored all images in an ArrayList. I want to store all of them on an SD car

7条回答
  •  暗喜
    暗喜 (楼主)
    2020-12-01 12:28

    Just convert your milliseconds to micro because getFrameAt get data in milliseconds

    1 miliseconds have 1000 microseconds..
    
    
    for(int i=1000000;i

    then your problem is solved..

    I created it according to my need.

    public class MainActivity extends Activity
    {
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            File videoFile=new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/screenshots/","myvideo.mp4");
    
            Uri videoFileUri=Uri.parse(videoFile.toString());
    
            MediaMetadataRetriever retriever = new MediaMetadataRetriever();
            retriever.setDataSource(videoFile.getAbsolutePath());
            ArrayList rev=new ArrayList();
    
            //Create a new Media Player
            MediaPlayer mp = MediaPlayer.create(getBaseContext(), videoFileUri);
    
            int millis = mp.getDuration();
    
            for(int i=1000000;i

提交回复
热议问题