안녕하세요.
videoview로 영상을 뛰우고 캡쳐하는부분을 만드려고하는데
videoView.setDrawingCacheEnabled(true);
Bitmap bm = videoView.getDrawingCache();
FileOutputStream out = new FileOutputStream(path);
bm.compress(Bitmap.CompressFormat.JPEG, 100, out);
// 비디오뷰 부분은 검정화면으로 뜹니다.
해결방법을 찾는중에
MediaMetadataRetriever
클래스를 사용하여 해결할 수 있다고 들었는데요..
제가아직 초보라 적용을 해볼수 없는데..
사용예 좀 알려주시면 감사하겠습니다.
//찾던도중 발견한 코드
MediaMetadataRetriever mmr = new MediaMetadataRetriever(); //객체를 생성 해 주고
mmr.setDataSource(path); //파일 패스를 넣어주 다음에
Bitmap bitmap = mmr.getFrameAtTime(time); //찍으려는 시간을 넣어서 비트맵으로 받으면 끝
//////////////////////////////////////////////////////////////////
private void moveScreenshot(VideoView view) {
MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever();
mediaMetadataRetriever.setDataSource("/mnt/sdcard/동영상");
int currentPosition = view.getCurrentPosition(); // in
// millisecond
Toast.makeText(this,"Current Position: " + currentPosition + " (ms)",Toast.LENGTH_LONG).show();
Bitmap bmFrame = mediaMetadataRetriever.getFrameAtTime(currentPosition * 1000, MediaMetadataRetriever.OPTION_CLOSEST_SYNC ); // unit in
// microsecond
if (bmFrame == null) {
Toast.makeText(this, "bmFrame == null!",Toast.LENGTH_LONG).show();
} else {
AlertDialog.Builder myCaptureDialog = new AlertDialog.Builder(this);
ImageView capturedImageView = new ImageView(this);
capturedImageView.setImageBitmap(bmFrame);
LayoutParams capturedImageViewLayoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
capturedImageView.setLayoutParams(capturedImageViewLayoutParams);
myCaptureDialog.setView(capturedImageView);
myCaptureDialog.show();
}
}