Как получить текущий кадр из видео в андроид Surfaceview? - PullRequest
0 голосов
/ 09 октября 2019

Я хочу создать приложение, которое воспроизводит живое видео. Необходимо захватить текущий кадр, нажимая кнопку. Спасибо,

Ответы [ 2 ]

0 голосов
/ 09 октября 2019

В дополнение к @Akshay Raiyani Answer,

Возможно, вы сталкиваетесь с этой ошибкой . Если это так, попробуйте:

  public static Bitmap retriveVideoFrameFromVideo(String videoPath)
                throws Throwable
        {
            Bitmap bitmap = null;
            MediaMetadataRetriever mediaMetadataRetriever = null;
            try
            {
                mediaMetadataRetriever = new MediaMetadataRetriever();
                if (Build.VERSION.SDK_INT >= 14)
                    mediaMetadataRetriever.setDataSource(videoPath, new HashMap<String, String>());
                    else
                        mediaMetadataRetriever.setDataSource(videoPath);
                bitmap = mediaMetadataRetriever.getFrameAtTime();
            }
            catch (Exception e)
            {
                e.printStackTrace();
                throw new Throwable(
                        "Exception in retriveVideoFrameFromVideo(String videoPath)"
                                + e.getMessage());

            }
            finally
            {
                if (mediaMetadataRetriever != null)
                {
                    mediaMetadataRetriever.release();
                }
            }
            return bitmap;
        }
0 голосов
/ 09 октября 2019

Вы можете получить кадр, используя MediaMetadataRetriever

private fun getVideoFrame() {
    val retriever = MediaMetadataRetriever()
    retriever.setDataSource(VIDEO_PATH)
    val bitmap = retriever.getFrameAtTime(yourTime, MediaMetadataRetriever.OPTION_CLOSEST)
}
...