Как получить снимок с видео, используя vitamio?

Я не могу получить снимок видеопотока из моего видео. Я тоже прочитал эту ссылку. Но после того, как я пытаюсь получить снимок видео, изображение всегда отображается пустым?

            Bitmap bitmap = takeScreenshot();
            saveBitmap(bitmap);

Кто-нибудь может получить мне решение?

import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Toast;

import io.vov.vitamio.Vitamio;
import io.vov.vitamio.widget.VideoView;


public class MainActivity extends AppCompatActivity{
    public VideoView mVideoView;
    public Uri uri;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout);
        Vitamio.isInitialized(this);
        mVideoView=findViewById(R.id.surface_view);
        String url="rtsp://xxxxxx/Streaming/xxxx/xxx/xxxx";
        uri = Uri.parse(url);
        mVideoView.setVideoURI(uri);
        mVideoView.setContentDescription(url);
        mVideoView.requestFocus();
        mVideoView.start();
        mVideoView.setOnPreparedListener(new io.vov.vitamio.MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(io.vov.vitamio.MediaPlayer mp) {
                mVideoView.setBackgroundResource(0);
            Bitmap bitmap = takeScreenshot();
            saveBitmap(bitmap);
            }
        });
        mVideoView.setOnErrorListener(new io.vov.vitamio.MediaPlayer.OnErrorListener() {
            @Override
            public boolean onError(io.vov.vitamio.MediaPlayer mp, int what, int extra) {
                Toast.makeText(MainActivity.this, "Error", Toast.LENGTH_SHORT).show();
                return true;
            }
        });
    }
  public Bitmap takeScreenshot() {
        ViewGroup decor = (ViewGroup) this.getWindow().getDecorView();
        ViewGroup decorChild = (ViewGroup) decor.getChildAt(0);
        decorChild.setDrawingCacheEnabled(true);
        decorChild.buildDrawingCache();
        Bitmap drawingCache = decorChild.getDrawingCache(true);
        Bitmap bitmap = Bitmap.createBitmap(drawingCache);
        decorChild.setDrawingCacheEnabled(false);
        return bitmap;
    }
    public void saveBitmap(Bitmap bitmap) {

        File imagePath = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Download/"+name_hp_file);
        File myDirectory = new File(Environment.getExternalStorageDirectory().getAbsolutePath(), "Download");

        if(!myDirectory.exists()) {
            myDirectory.mkdirs();
        }
        FileOutputStream fos;
        try {
            fos = new FileOutputStream(imagePath);
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
            fos.flush();
            fos.close();

            alert_with_share.showDialog(this, getString(R.string.image_save),1,widht_dialog,imagePath);
        } catch (Exception e) {
            alert_with_share.showDialog(this,e.toString(),2,widht_dialog,imagePath);
        }
    }

}

0 ответов

Другие вопросы по тегам