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

안드로이드 스트리밍 ndk 사용 질문입니다.

0 추천
안드로이드 킷캣 이상버젼에서는 기본 코덱에 문제가 있는 듯 합니다.

왜냐면 vlc로 h264코덱으로 출력하고, videoview로 띄워보려하면 킷캣이상버젼에서 모두 재생할수없다고 나오더군요.(rtsp프로토콜. 안드로이드에서 rtsp 기본 파서 문제인듯합니다)

 

그런데 안드로이드버젼 vlc로 테스트해봤을 때는 ,rtsp가 잘 출력됩니다.

구글링 하다가 보니까, 안드로이드 내에 기본코덱보다 다른 미디어플레이어(mx플레이어라던가, vlc라던가.) 등은 이미 소프트웨어 코덱이 지원되는 것이 많아서 동영상 재생되는 케이스가 더 많다고 하더라구요.

 

이 고민으로 한 2주일정도했는데, videoview로 띄우는거 포기하고, NDK로 VLC를 포팅해서 하는 쪽으로 방향을 잡는게 맞을까요? 그런방식을 사용하면, 좀 오래걸리긴 하겟지만, 모든 디바이스 기기에서 동영상 스트리밍이 가능하지않나요? (VLC 소프트웨어 코덱덕분에)

 

조언해주시면 감사하겟습니다. 사실 NDK를 써본적이 없어서요 ㅠㅋㅋ난이도가 높으려나요?
익명사용자 님이 2016년 2월 5일 질문

1개의 답변

0 추천
VLC, FFMPEG의 경우 H264->YUV420 SW 디코딩 -> RGB 565로 변경 -> ImageView를 통해 출력

VideoView는 H264->YUV420 HW 디코딩 -> Surface View를 통해 출력으로 동작 방식이 다릅니다.

 VLC, FFMPEG의 경우  AC3, DTS 코덱을 지원하고 파서 성능도 안드로이드 기본 플레이어보다. 다소 대응이 많이 되게 되어 있어 동영상 재생되는 케이스가 더 많긴 합니다만.

VideoView에서 재생이 제대로 안되는 이유는  코덱 문제라기 보단,

VLC쪽 RTSP나 HTTP 스트리밍을 제대로 지원 못해서 발생하는 문제 입니다...

 

VideoView를 사용하시려면 RTSP, TCP 데이터 받는 부분을 java 프록시 서버에서 수행하게 하여, VideoView를 에서 프록시에서 접속하여 데이터를 받을 때 HLS 형식으로
받도록 하는 변경 모듈을 만드시면 되긴 합니다만. 난이도가 다소 있을 겁니다.

 

SW 코덱을 쓰실 경우  디코딩 속도가 HW보다 늦어 단말 성능이 나쁘면 720p를 제시간에 그리지 못한다는 단점이 있긴 하지만
요즘 폰 성능이 좋아 카메라의 해상도가 480P정도면 어지간하면 사용하는데 지장없습니다.

특히  VLC의 경우 안드로이드 소스가 풀로 공개되고 있으니 환경 설정만 잘하셔서  빌드만 하신다면 사용하시는데는 문제가 없으실겁니다.

아래 링크를  확인 해 보세요..
http://www.econovation.co.kr/ecnvb/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-vlc-%ED%94%8C%EB%A0%88%EC%9D%B4%EC%96%B4-%EA%B0%9C%EB%B0%9C-7%ED%8E%B8vlc-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-%EC%BB%B4%ED%8C%8C%EC%9D%BC/
익명사용자 님이 2016년 2월 5일 답변
오..감사합니다!!참고해서 시도해보도록하겠습니다!
...