я пытаюсь создать эскиз из видео перед загрузкой - PullRequest
0 голосов
/ 06 октября 2019

Я пытаюсь создать миниатюру из видео, прежде чем загружать его в Firebase. Я перепробовал все решения, которые получил в Интернете, но ни одно из них не сработало. Я не получаю никакой ошибки, и временный файл не создан. Я предоставил код ниже, пожалуйста, помогите мне создать миниатюры из видео.

public void videotempfilecreate(){
    Bitmap vidBitmap = MediaStore.Video.Thumbnails.getThumbnail(personalChat.this.getContentResolver(), ContentUris.parseId(imagefile),MediaStore.Video.Thumbnails.MICRO_KIND,
            (BitmapFactory.Options) null);
    File videotemppath = new File(Environment.getExternalStorageDirectory()+"/Alpha/Video/temp/");
    FileOutputStream out = null;
    if(!videotemppath.exists()){
        videotemppath.mkdirs();
        File videotemp = new File(videotemppath,System.currentTimeMillis()+".png");

        try {
            out = new FileOutputStream(videotemp);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        vidBitmap.compress(Bitmap.CompressFormat.PNG,100,out);
        Toast.makeText(personalChat.this,videotemp.getPath().toString(),Toast.LENGTH_SHORT).show();
    }
}

в приведенном выше коде imagefile - это Uri imagefile = data.getdata ();

Еще одна вещь, которую я пытаюсь извлечь кадр из видео и сохранить его, но это также несработало

public static Bitmap retriveVideoFrameFromVideo(String p_videoPath)
        throws Throwable
{
    Bitmap m_bitmap = null;
    MediaMetadataRetriever m_mediaMetadataRetriever = null;
    try
    {
        m_mediaMetadataRetriever = new MediaMetadataRetriever();
        m_mediaMetadataRetriever.setDataSource(p_videoPath);
        m_bitmap = m_mediaMetadataRetriever.getFrameAtTime();
    }
    catch (Exception m_e)
    {
        throw new Throwable(
                "Exception in retriveVideoFrameFromVideo(String p_videoPath)"
                        + m_e.getMessage());
    }
    finally
    {
        if (m_mediaMetadataRetriever != null)
        {
            m_mediaMetadataRetriever.release();
        }
    }
    return m_bitmap;
}

не получено никакой ошибки, но временный файл не создан.

...