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

동영상 해상도 변동 (144p ==> 720p) [closed]

0 추천

원래는 질문이었으나 제가 해결하였고, 너무 초보적인 내용이지만 저 같은 초보자를 위해 지우지 않고 내용 수정 하여 남겨 두려고 합니다.

일단 동영상은 만들어 저장 되었습니다. 만들어진 파일의 속성을 보면 프레임 너비 176, 높이 144입니다. 이를 720p, 640p 처럼 다른 해상도로 만들어 보고자 하였는데 계속 파일은 만들어지지만, 녹화 저장이 되지 않고 파일 사이즈가 0kB입니다.

그 이유는 해상도 너비 높이 설정 실수 입니다.

1024 768(0.75배), 640 480(0.75배) 해야 하는데 예를 들면 640 460으로 하여서 입니다.

 

혹시 몰라 작은 차이인 640 479 혹은 640 481도 해 봤는데 역시 에러납니다.

 

제가 아래과 같이 코딩 하였습니다.

 recorder.setVideoSize(640, 460);

아시다시피 정확한 것은 640 480입니다.

 recorder.setVideoSize(640, 480);

검색하다보니 만약 정사각형으로 하고 싶으면 일단 만들어 다시 캡쳐해야 하는 것 같습니다.

감사합니다.

질문을 종료한 이유: 해결되었습니다.
원래자유 (470 포인트) 님이 2022년 1월 25일 질문
원래자유님이 2022년 2월 4일 closed
제가 비디오쪽은 잘 몰라서 스택오버플로우 링크를 남깁니다.

https://stackoverflow.com/questions/14581017/android-modifying-recorded-video-quality

답변이 채택되어 있는 걸로 봐서는 선택된 답이 동작할 것 같습니다.
(추가: 아래는 제가 삽질한 내용인데 그냥 이력으로 두었습니다.)

감사합니다.

그런데 보내 주신 링크는 Android: Modifying recorded video quality 비디오 품질 (해상도가 아님) 인 것 같습니다. 제가 원하는 것은 아마 해상도 일것 같습니다. 1020p, 640p 720 같은 것이죠.

아래는 주신 링크 참조하여 제가 해 본 것입니다.


        // 동영상 만들어짐  프레임 너비 176 높이 144
        // VideoEncoder.DEFAULT: 데이터속도 204kbps, 총비트전송율: 218kbps
        // VideoEncoder.MPEG_4_SP: 데이터속도 50kbps, 총비트전송율: 63kbps (실행하면 2 정도 이내의 차이는 있는 것 같음)
//        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.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);


        // CamcorderProfile.QUALITY_HIGH 관련 2줄 추가
        // 동영상 만들어지나 프레임 너비 176 높이 144 변동 없음
        // VideoEncoder.DEFAULT: 데이터속도 1804kbps, 총비트전송율: 1816kbps
        // VideoEncoder.MPEG_4_SP: 데이터속도 60kbps, 총비트전송율: 73kbps
//        CamcorderProfile cpHigh = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);
//        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.setVideoEncodingBitRate(cpHigh.videoBitRate);


        // 동영상 파일이 폴더에 생성되었으나, 사이즈 0KB
//        recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
//        recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
//        recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
//        recorder.setVideoSize(640, 460);
//        recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
//        recorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);


        // 녹화 버튼 누르면 앱 죽어버림
        // setVideoFrameRate, setVideoEncodingBitRate 삭제해도 녹화 버튼 누르면 앱 죽어버림
//        recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
//        recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
//        recorder.setVideoSize(640, 480);
//        recorder.setVideoFrameRate(16); //might be auto-determined due to lighting
//        recorder.setVideoEncodingBitRate(3000000);
//        recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);// MPEG_4_SP
//        recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);


        // 동영상 만들어짐  프레임 너비 176 높이 144
        // 데이터속도 189kbps, 총비트전송율: 201kbps
        recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
        recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
        recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
        recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
...