Как извлечь растровое изображение из видео? - PullRequest
0 голосов
/ 16 марта 2020

Я работаю над Java приложением в Android Studio. Мне нужен любой код, где мы можем получить растровое изображение из видео . Я беру видео, используя абсолютный путь. Входной сигнал от видео составляет 8 кадров в секунду.

MediaMetadataRetriever retriever = new MediaMetadataRetriever();
retriever.setDataSource(absolutePath);

Просто хотел взять растровое изображение из видео. Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 16 марта 2020

Если вам нужно изображение из видео, вы можете использовать библиотеку под названием FFMPEG, реализовав в gradle следующее:

 implementation 'com.arthenica:mobile-ffmpeg-min:4.3.1.LTS'

Используя несколько команд, вы можете преобразовать все кадры видео в изображение или получить один Frame также

для получения дополнительной информации, пожалуйста, посетите: -

 https://github.com/tanersener/mobile-ffmpeg

, если вы хотите только рамку для отображения в режиме просмотра изображений, то вы можете использовать библиотеку glide / picasso.

Надеюсь, что это Вам поможет .. !!!

0 голосов
/ 16 марта 2020

Я попробовал следующий код, и он работал

 MediaMetadataRetriever retriever = new MediaMetadataRetriever();
   try {
        //path of the video of which you want frames
        retriever.setDataSource(absolutePath);
    }catch (Exception e) {

    }

    String duration = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
    int duration_millisec = Integer.parseInt(duration); //duration in millisec
    int duration_second = duration_millisec / 1000;  //millisec to sec.
    int frames_per_second = 30;  //no. of frames want to retrieve per second
    int numeroFrameCaptured = frames_per_second * duration_second;
    long frame_us=1000000/30;
    capture=="+numeroFrameCaptured);

    for (int i = 0; i < numeroFrameCaptured; i++)
    {
        //setting time position at which you want to retrieve frames

        MEventsManager.getInstance().inject(MEventsManager.IMAGE,retriever.getFrameAtTime(frame_us*i,MediaMetadataRetriever.OPTION_CLOSEST));
    }

    retriever.release();
...