서적에 관한 질문 및 오류 등을 문의 할 수 있으며, 저자로부터 직접 답변을 받을 수 있습니다.

안녕하세요~


프레임워크 소스를 분석하다가 궁금한 점이 있어서 또 질문드려봅니다.


저번 질문에 연장된 질문이기도 하네요;;


안드로이드 소스에 보면 MediaPlayerService.cpp 소스가


안드로이드의 미디어 서버에 있는 미디어 플레이어 서비스의 기능을 구현한 소스인거 같은데요...


main_mediaserver.cpp 소스를 보니...


미디어 서버를 프로세스로 실행해서..

각 서비스의 인스턴스를 생성하고 컨텍스트 매니저에 서비스 이름을 등록한 뒤


바인더를 이용해서 서비스를 사용하는것 같던데... 제가 이해한 것인데 맞는지 모르겠네요..


문제가 생긴게.. MediaPlayerService.cpp 소스 내부에서


getPlayerTyep 함수로 미디어 재생 엔진을 결정더군요...


그래서 확장 된 엔진이나 새로운 엔진을 추가하기 위해서는 MediaPlayerService.cpp 소스 수정이 불가피하고


수정 된 MediaPlayerService를 새로운 미디어서버 프로세스를 실행해 컨텍스트 매니저에 등록 해야 할 것 같은데...


새로운 미디어서버 프로세스를 생성 한 뒤 MediaPlayerService 인스턴스를 생성해야 될까요??


아니면 실행되고 있는 미디어 서버에 새로운 서비스를 추가할 수 있는 방법이 있나요?


방향을 제대로 잡고 있는지도 잘 모르겠군요 ㅠㅠ.... 


아.. 갈길이 멀군요~


고도리

2013.03.27 23:39:04
*.200.239.210

동적으로는 불가능합니다.


안드로이드의 안 좋은 점 중의 하나입니다만, 원래 system level에서만 손을 대도록 구성되어 있습니다.

물론, 보안 때문에 그렇습니다.


해서 dice나 mxplayer등은 application에서 ndk를 이용해서 따로 구현한 것입니다.

김바람

2013.03.28 01:26:37
*.118.69.52

답변 감사드립니다~


부팅 시 init할 때 생성되는 거 말고는 동적으로 할 방법이 없나보네요 ㅠㅠ..

Service Manager 에도 서비스 이름이 지정되어 있는 것만 등록되는 것 같고... 


마지막 말씀중에 dice나 mx 가 application에서 ndk를 이용해서 따로 구현하셨다고 말씀하셨는데..

조금 더 추가 설명을 해주실 수 있으신가요?

쭈암

2013.03.30 08:21:20
*.221.81.169

media service를 안쓰고 구현해야 합니다.

testkey라면 테스트 Player를 특정 URI에 매핑해서 올리는 코드가 있습니다.

test:// 이였나...하여튼 소스 어딘가에 관련 코드가 있기는 한데 testkey로 사인된 이미지에서만 활성화 됩니다.

상용 단말에서는 안됩니다.

김바람

2013.04.01 00:19:34
*.118.69.52

답변 감사드립니다 쭈암님~

아 그방법 역시 상용 단말에서는 안되나 보네요 ㅠㅠ.....

고도리

2013.04.01 01:22:41
*.111.12.170

예...안됩니다.


따로 구현해야 합니다. application 형태로요.

고도리

2013.03.30 19:05:01
*.111.12.170

그냥 application 하나 작성하신다고 생각하시면 됩니다.


ffmpeg 같은 library를 이용하여 player를 만들고, 오디오는 AudioTrack을 쓰고, video는 버전별 library를 작성하시고(버전따라 틀립니다), UI를 NDK와 연동된 java로 하시면 됩니다.


ffmpeg android NDK ffplay 등으로 검색해 보시면 자료들이 좀 나올겁니다.


예전 github.com 에 관련 프로젝트들이 있는 것을 본 적이 있습니다.

김바람

2013.04.01 00:18:16
*.118.69.52

답변 감사드립니다~!


저의 상황을 정리를 해보자면 ㅎㅎ


소프트웨어 디코딩과 하드웨어 디코딩을 동시에 지원하는 플레이어를 만들어 보고 있구요..

기존의 유명 플레이어들의 공통 특징이기도 하죠


저도 소프트웨어 디코딩 쪽으로는 ffmpeg 라이브러리와 Opengl es Shader를 써서 작업중에 있습니다.


다만 하드웨어 디코딩을 통한 프레임 데이터 추출을 원하는 이유가 속도적인 측면에서 

아직까지는 벤더에서 제공하는 디코더가 성능이 좋은 것을 아실겁니다.


Java API 인 MediaPlayer로 쉽게 벤더에서 제공하는 하드웨어 디코딩을 사용할 수 있지만 프레임 데이터를 직접 컨트롤 할 수는 없기 때문에 다른 방법을 찾아봐야 했습니다.


API 14부터 제공되는 MediaCodec을 써서 하드웨어 디코딩을 구현해보았지만.. 

Java쪽으로 올라와있는 buffer를 통해서 프레임데이터에 접근할려고 해도 역시나 제한이 걸려있어서 접근이 안되더군요..


그래서 다른 방법으로 

PDK소스를 때어와서 Awesomeplayer 까지의 호출 루틴을 재작성(미친짓인듯 ㅠ)하고 확장한 뒤

So파일로 만들어서 앱에서 호출하는 방식으로 구현해 보고 있었습니다..


그런데 지식이 짧아 미처 알지 못한 부분이 있었는데요.ㅠㅠ.. 


제가 재작성한 MediaPlayerService를 등록하기 위해서는


MediaServer 프로세스에 등록해야하는데... 이 MediaServer 프로세스가 부팅시에 init프로세스에서 생성이되고


프로세스를 동적으로는 생성이 안된다더군요 ㅠ... 즉 루팅을 하지 않는 이상 불가하다는 것을 알게 됐습니다.ㅜㅜ


정리를 하자면 하드웨어 디코딩 된 프레임 데이터를 루팅하지 않고 가져와서 여러가지 추가된 기능을 넣고 싶었는데... 더이상 방법이 보이질 않네요 ㅎ;;  루팅이 답인가요 ;;;;


하드웨어 디코딩 된 프레임 데이터를 직접 사용만 할 수 있다면 성능 좋은 확장된 기능의 플레이어를 만들 수 있겠다는 생각에서 출발했는데 다른 아이디어가 있는지 조언을 구하고 싶네요...^^


고도리

2013.04.01 01:16:43
*.111.12.170

루팅하지 않아도 가능할겁니다.


Nuplayer란 녀석을 처리하면서, android에서는 libstagefright/ACodec.cpp 란 녀석이 추가되었습니다.

이 녀석 사용법을 보시면 codec을 처리하실 수 있습니다.


다만 Codec을 처리하는데 있어 여러가지가 있지만, codec을 처리하는 것은 결국은 display와 관련이 있다는 얘기입니다. 해당 루틴을 파악만 한다면...어차피 칩이 몇가지 안되니간요.


처리가 가능합니다.


고도리

2013.04.01 01:21:58
*.111.12.170

이와 관련된 부분을 쪽지로 보냈습니다.


함 읽어보시기 바랍니다. 

김바람

2013.04.01 05:52:54
*.118.69.52

아 ^^ 쪽지 읽어보았습니다~ㅎ 답장 보내드렸습니다

List of Articles
번호 제목 글쓴이 날짜 조회 수sort

JNI로 휴대폰 디바이스 번호를 구하려고 합니다 file [3]

  • fox8306
  • 2012-09-19
  • 조회 수 6884

MediaServer 에 관련해서 질문드려요 [10]

안드로이드 4.2 프레임버퍼 접근 질문드려요~! [6]

  • 범내
  • 2013-07-30
  • 조회 수 5947

261페이지 맨 아랫줄에 대해 문의드립니다. [2]

  • binch
  • 2012-07-18
  • 조회 수 5747

hoffplay 컴파일 질문 입니다. [2]

[압축된 07-TestSkia 예제파일 올려주세요] [1]

네이티브 스레드로 자바 콜백 만들기 질문드립니다. [2]

[예제12.SDL] Android 에서 SDL 사용하는 예제 실행 안됨 문의... [7]

  • 둘리
  • 2013-03-12
  • 조회 수 5609

NDK 책내용중에 3.11 외부 라이브러리 활용하기 에서 질문 드립니... file [5]

  • 엽스
  • 2013-08-30
  • 조회 수 5590

드디어 안드로이드 소스까지 컴파일했습니다. [3]

  • 죽유
  • 2012-12-22
  • 조회 수 5548

책을 보다 몇가지 질문이 생겼습니다. [6]

책에서 사용하고 있는 ffmpeg 소스. file [1]

init: sys_prop: unable to stop service ctl [DVBService] ... [2]

OpenGL 책p168 예제 질문드립니다.

안드로이드의 모든 것NDK (고현철,전호철 지음) 책 실습 중 문제에... [1]

NEON관련 좋은 참고 문서가 있을까요? [7]

  • 죽유
  • 2013-01-10
  • 조회 수 5392

카메라로부터 프래임 데이터 추출하는 예제 입니다. file [1]

  • 죽유
  • 2013-01-24
  • 조회 수 5383

apk uploading timeout에 대해 문의 드립니다. [2]

  • 죽유
  • 2013-01-10
  • 조회 수 5374

NDK 컴파일이 안됩니다. file [8]

여러 분들이 말씀하신 것처럼 책(NDK)의 예제코드를 올려주실 수 없... [2]

  • 트론
  • 2013-08-24
  • 조회 수 5255

사용자 로그인