본문 바로가기
프로그래밍/Android-Java

[ANDROID] Mediacodec을 사용한 높은 비트레이트 낮추기

by 채연2 2022. 1. 5.

후 완전 삽펐다.

업무시간 7시간을 날렸다.. 

 

onPreviewFrame에서 넘어온 데이터를 미디어 코덱에 넣고 인코딩 돼서 나온 데이터 크기가 20만이 넘었다.

즉, bufferinfo size가 20만이 넘은 것이다.

물론 중간에 한 번씩 20만 넘는 사이즈로 튀는건 괜찮은데 계속 20만 이었다가 중간에 한 번씩 80만으로 튀는 현상이 발생했다......

 

mMediaFormat.setInteger(MediaFormat.KEY_BIT_RATE, 2000000);

위 코드에서 비트레이트 값을 아무리 바꿔봐도 1도 적용이 안돼보였다...

 

 

위 그림에서 sum * 8 값이 계산된 비트레이트 값인데 약 60메가가 나온다.

 

 

해결 방법은 간단하다.

mMediaFormat.setInteger(MediaFormat.KEY_BITRATE_MODE, MediaCodecInfo.EncoderCapabilities.BITRATE_MODE_CBR);

한 줄 추가해줬더니 사이즈가 확 줄면서 비트레이트도 정상적으로 약 2-3메가 정도로 줄었다.

 

 

 

 

혹시 나와 같은 현상이 있는 분들이 계시다면... 이 게시글을 보시고 저처럼 삽 푸지 마시길..

320x100

댓글