티스토리 뷰

반응형

안드로이드에서 녹화된 영상을 스트리밍 서버로 전송하여


여러 사람들이 볼 수 있는 어플을 개발하고 싶다.


어제까지는 서버 구축을 하기 위해서 여러 삽질을 했었고, 오늘은 클라이언트(안드로이드 단말기) 에서 서버로 어떻게 영상을 보내는지 살펴보았다.


나는 Nginx서버엔진에 rtmp-module을 설치하여 미디어 서버를 만들었기 때문에, rtmp프로토콜을 이용하여 서버로 전송해야 한다.


하지만, rtmp프로토콜은 안드로이드에서 지원하지 않으며, 카메라 녹화 방법조차 모른다. 더군다나 그걸 쪼개서 서버에 전송해야 하다니... 나는 ExoPlayer만 있으면 다 해결될 줄 알았다. 멍청했다. 애초에 Player를 영상 녹화하는 거라고 착각을 했으니...


여러 사이트들을 다시 찾아본 결과, JavaCV와 FFmpeg(NDK)를 써서 보내거나, 아니면 안드로이드에서 제공하는 Camera2 API를 써야하며, SurfaceView(또는 OpenGL, TextureView), MediaRecorder를 이용하여 녹화를 하고... 그 데이터 파일을 MediaCodec을 이용하여 인코딩시켜 보내야 한다고 한다.



????????????????????????????????



갑자기 머리가 아파오기 시작했다. 이걸 다 공부하고 바로 내가 직접 다 구현해야 되다니......... 그리고 스트리밍이면 ByteBuffer를 써서 보내야하는데..

2주일은 넘게 걸릴 것 같다. 길면 3주.....한 달도 걸릴수도?


더 쉬운 방법이 없나 찾아봤다. 구글신에게...


역시나 방법은 있었다. 천재 개발자들이 이미 다 만들어놓은 라이브러리를 사용하면 되겠다. 대신 어떻게 돌아가는지 살펴 봐야겠지..


1. PedroSG94의 rtmp-rtsp-stream-client-java


-> 사용법은 간단. 라이브러리 내용은 복잡하긴 하지만 여러가지 배울 곳이 많은 곳.

기본 모드(Default RTMP)에선 SurfaceView를 사용하여 카메라 촬영을 하며, TextureView, OpenGL을 이용한 GlSurfaceView를 사용하는 방법 등 여러가지 방법으로 스트리밍을 한다. 또한 GLSurfaceView에서는 직접 화면안에 이미지나 텍스트를 구현할 수 있다.


샘플 앱을 받아서 테스트를 진행했으며, 문제없이 송출되었다.


2. TakuSemba의 RtmpPublisher


-> 사용법은 간단. 라이브러리 내용도 심플하다. 1번 라이브러리 내용의 1/10 수준... 그래서 접근성이 좋다. 기본적으로 OpenGL 1.0을 써서 제작한 듯 하다.

샘플 앱을 직접 만들어서 제작해야 하기 때문에, 테스트는 안해봤지만 될 것 같다.


3. bageekmyfriend의 yasea


-> 복잡하며..설명도 제대로 안되어있다. 나같은 허접 개발자한테는 접근하기 힘들듯.. 그리고 라이브러리도 내가 직접 컴파일 해야하는 것 같다.

기본적으로 OpenGL 2.0을 써서 제작한 듯 하다. 샘플 앱으로 테스트 해봤는데... 화질 상태가 영 좋지 못하다. 깨져서 나온다...





라이브러리 안의 구현한 것을 보니.. 역시나.. 저걸 내가 다 구현하는건 무리수라고 생각했다. 모르는거 천지인데.. 어떻게 개발을 하겠나...


한 달 걸린다는말 취소하겠다. 저건 1년 걸려도 만들기 힘들어보인다. 도중에 포기할 듯. LowLevel 언어같다. 안드로이드에서 스트리밍 자체를 지원하지 않으니.... 저걸 다 구현한 사람이 정말 존경스러워 보인다.


※ 참고로, bageekmyfriend 유저가 만든 yasea 라이브러리 말고도 Simple-RTMP-Server 모듈이 있다.(줄여서 srs) 밑에 표를 보면 알겠지만 Nginx-rtmp 모듈보다 여러면으로 좋다고 한다. 근데 AWS 설치해보니 막혀버려서 나중에 다시 생각해봐야겠다..... AWS에선 안되나?


받는 쪽에서는 ExoPlayer를 이용하여 구현하면 되겠다... 그것 쉽겠지.

반응형

'잡설' 카테고리의 다른 글

VMWARE에 맥OS 설치하기.  (0) 2018.06.09
안드로이드 MVP 따라하기  (0) 2018.06.07
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함