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

안드로이드 카메라 해상도 질문드립니다.

0 추천
front camera와 backcamera로 얻어올수있는 해상도가 다르던데

2개의 카메라에서 얻어온 해상도를 섞어서 쓸수도있나요?

그러니깐 front camera에서 얻어온 해상도를 backcamera에서 사용가능한지 여쭙고싶습니다.
익명사용자 님이 2017년 11월 28일 질문

1개의 답변

0 추천
 
채택된 답변

front camera와 back camera의 intersection을 카메라 해상도로 설정하면 가능할 것 같습니다.

back camera에서 지원하는 고해상도를 front camera의 해상도로 업스케일링할 수는 없습니다.

 
minor (13,710 포인트) 님이 2017년 11월 29일 답변
디바이스 내에있는 카메라 즉, 시스템앱인 카메라(back Camera)에서 비디오 해상도 설정시 나오는해상도값이 왜 코드로 받아왔을때는 없는걸까요..ㅠ
map.getOutputSizes(MediaRecorder.class)
와 같이 MediaRecorder,Surface등 getOutputSizes의 파라미터가 될수있는 모든 클래스를 다 집어넣어봐도 시스템앱의 카메라에서 지원하는 해상도를 찾을수가없습니다...
google reference source를 사용중이시라면 chooseOptimalSIze() 메서드에서 aspectRatio를 비교하는 부분과 surface width/height보다 작은 값을 받아오도록 검사하는 로직이 있습니다.
map.getOutputSizes(MediaRecorder.class) 메서드를 바로 사용했을 경우에는 해당 카메라의 모든 해상도 정보를 받아올 수 있습니다.
음.. 네 맞습니다. 분명 chooseOptimalSize()가 해상도값의 필터링을 하고있긴합니다만, 말씀해주신대로 map.getOutputSizes(MediaRecorder.class)를 그대로 사용하였음에도 시스템카메라앱에있는 모든 해상도를 다 가져오지는 못하는것같습니다..
시스템 카메라앱에서 따로 무슨처리를했는지 궁금하네요 ㅠ
map.getOutputSize(ImageFormat.JPEG)로 하면 사진캡처의 모든 해상도를 가져올수있긴한데,
동영상 해상도의 모든 해상도를 가져오기위해선 어떤 파라미터를 넣어줘야하는지..
예로, 동영상녹화시 1920*1080의 해상도를 지원하는데, 구글 레퍼런스 코드의 해당 디바이스의 시스템정보를 참조하여 만든 surface객체에는 1920*1080 해상도를 지원하지 않아서 surface생성 자체가 이루어지지 않습니다..
실제로 map.getOutputSize(Surface.class)로 받아온 리스트를 확인해도 1920*1080해상도는 없구요 ㅠ
개인적으로는 시스템앱 내부에서 뭔가 또다른 로직이 돌고있지않을까 싶은 생각도 듭니다 하
https://stackoverflow.com/questions/39946858/how-to-get-entire-list-of-available-resolution-of-camera2api

여기를 찾아보니 시스템 카메라앱은 제조사 측에서 비공개 API를 사용하여 만든다고 하네요..
그래서 찾아볼수없었나봅니다.
실제로 플레이 스토어에서 제공되는 앱들보면 해상도 조절하는 기능이 없긴하더라구요.
그런데 댓글을보면 camera1 API를 쓰면 또 보인다고 하는거같기도합니다?
...