Как получить снимок с видео, используя 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);
}
}
}