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

MediaCodec 질문드려요.

0 추천
MediaCodec을 이용하여 해당IP로부터 데이터를 전송받아

실시간으로 화면 출력하는부분을 구현했는데

 

문제는 화면이 카메라 그대로 방향인지라 좌우반전이 필요한데

아무리 찾아봐도 정보를 못찾겠네요.

단순 surfaceview에 setscale로 바꿔보면 이미지는 바뀌는데 화면출력은 안되네요.
예림이그코드좀바바 (2,470 포인트) 님이 2015년 12월 28일 질문

1개의 답변

+1 추천
 
채택된 답변

MediaFormat 파라메터 중 KEY_ROTATION 를 설정하여 화면을 회전하는 것은 가능하지만 좌우 반젼은 안 됩니다.

좌우 반전을 하시려면  TextureVideoView를 사용하여 openGL을 연산 통해 그려지는 좌표를 반전 시켜 주셔야 할 듯 합니다.

 

익명사용자 님이 2015년 12월 28일 답변
예림이그코드좀바바님이 2015년 12월 28일 채택됨
이리저리 죄다찾아봤는데 없어서 난감했는데 역시나였군요 ㅠ..
답변 너무 감사드립니다...
미디어코덱으로 구현해놓은거에 TextureVideoView를 사용해서 하는건가요?
TextureVideoView 는 SurfaceView 대신 GLSurfaceView를 사용하여 영상 위치를 변경하는 예제일 뿐입니다. 굳이 그걸 사용 안하셔도 됩니다.

아래 링크는 Exoplayer에서 VP9 영상을 YUV로 디코딩한 데이터를 RGB로 변경하여 그리는 부분입니다. MediaCodec을 통해 디코딩된 영상도 YUV데이터니.
이 코드를 참조해서. X좌표만 대칭 시켜주셔도 될 겁니다.
https://github.com/google/ExoPlayer/blob/master/extensions/vp9/src/main/java/com/google/android/exoplayer/ext/vp9/VpxRenderer.java
감사합니다. 그냥 ip통신에서 임의의 바이트 데이터를 받아서 input버퍼에 넣어놓고  출력해주고있는데 exoplayer를 보니 YUV데이터를 해석할때 Output버퍼에 데이터를 가져와서 분석하더라고요.. 디코더말고도 인코딩도 따로 해줘야하는건가요? 헷갈리네요-_ㅠ
첨부해드린 예제는  인코딩이 아니라 칼라변환 후 출력하는 예제입니다.
인코딩 하실 필요는 없을 듯 하구요 출력 시키는 openGL 코드를 보고 좌우 출력 부분을 바꿔 주시라고 가이드 드린겁니다.
...