마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 동영상 녹화 후 저장된 영상의 화질 개선 문제입니다.

0 추천
// 녹화 시작
    recordBtn.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            try {
                if (recorder == null) {
                    recorder = new MediaRecorder();
                }

                //recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
                recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
                recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
                //recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
                recorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);
                //recorder.setOrientationHint(90);  // 영상 회전 값 조정.

                filename = createFilename();
                Log.d(TAG, "current filename : " + filename);
                recorder.setOutputFile(filename);

                recorder.setPreviewDisplay(holder.getSurface());
                recorder.prepare();
                recorder.start();

            } catch (Exception ex) {
                Log.e(TAG, "Exception : ", ex);

                recorder.release();
                recorder = null;
            }
        }
    });

    // 녹화 중지
    recordStopBtn.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            if (recorder == null)
                return;

            recorder.stop();
            recorder.reset();
            recorder.release();
            recorder = null;

            ContentValues values = new ContentValues(10);

            values.put(MediaStore.MediaColumns.TITLE, "RecordedVideo");
           // values.put(MediaStore.Audio.Media.ALBUM, "Video Album");
           // values.put(MediaStore.Audio.Media.ARTIST, "Mike");
           // values.put(MediaStore.Audio.Media.DISPLAY_NAME, "Recorded Video");
            values.put(MediaStore.MediaColumns.DATE_ADDED, System.currentTimeMillis() / 1000);
            values.put(MediaStore.MediaColumns.MIME_TYPE, "video/mp4");
           // values.put(MediaStore.Audio.Media.DATA, filename);

            Uri videoUri = getContentResolver().insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, values);
            if (videoUri == null) {
                Log.d("SampleVideoRecorder", "Video insert failed.");
                return;
            }

            sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, videoUri));

        }
    });


    // 영상 재생.
    playBtn.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            if (player == null) {
                player = new MediaPlayer();
            }

            try {
                player.setDataSource(filename);
                player.setDisplay(holder);

                player.prepare();
                player.start();
            } catch (Exception e) {
                Log.e(TAG, "Video play failed.", e);
            }
        }
    });

    // 영상 재생 종료.
    playStopBtn.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            if (player == null)
                return;

            player.stop();
            player.release();
            player = null;
        }
    });

    checkDangerousPermissions();
}

촬영시 영상은 휴대폰의 카메라를 이용해서 그런지 굉장히 선명하지만

녹화된 영상을 재생하게 되었을때 화질이 정말 못 봐줄 정도입니다.

어느 부분을 수정해야되는지 알 수 있을까요??

khseob0715 (140 포인트) 님이 2017년 10월 28일 질문

1개의 답변

0 추천

MediaRecoder의 해상도비트레이트를 늘려보시고

그래도 화질이 나쁘다면, Camera쪽 파라메터를 수정해서 해상도를 늘려보세요.

 

익명사용자 님이 2017년 10월 30일 답변
...