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

팝업플레이(최상위에 비디오재생) 관련 질문 (실시간스트리밍)

0 추천

안녕하세요, 안드로이드 초보 개발자입니다.

요즘 왠만한 스마트폰에 다 들어있는 팝업플레이 비디오 재생 기능을 구현하려고 하고 있습니다.
(최상위뷰로 동영상 재생)

Service로 뷰를 구성했습니다. (안에 SurfaceView가 있습니다.)

SurfaceView를 받아오고, getHolder로 Holder를 받아온후, MediaPlayer에 setDisplay(Holder) 해줬습니다.

player.setDataSource(Uri)로 동영상을 지정해준후 prepareAsync를 시켰습니다.

그 후 setOnPreparedListener에서 start를 시켜주고 있거든요

 

근데, 문제는... prepareAsync가 호출된 후에도 한참있다가 onPrepared가 호출된다는 겁니다...

제가 원하는것은... 동영상이 다 받아지지 않아도 그냥 바로 재생이 시작되었으면 하는데요..

(prepareAsync 뒤에 바로 start를 호출해줘도 바로 재생이 안됩니다 ㅠㅠ )

 

이에 대한 방법을 찾기가 힘드네요 ㅠ;

혹시 이와 관련된 내용 아시는분.. 조언 부탁드리겠습니다!!

 

ps. 사용한 영상 uri 주소는 다음과 같습니다. 

http://sites.google.com/site/ubiaccessmobile/sample_video.mp4

블랙이요블랙 (12,860 포인트) 님이 2014년 9월 15일 질문

1개의 답변

0 추천
 
채택된 답변

불가능 합니다.

prepare 는  하는게 파일을 받아 파일 헤더 등을 분석해서

, 어떤 형식의 동영상의 컨테이너(mp4,avi, mkv, wmv) 가 어떤 것인지,

동영상 코덱이 어떤것이며 해상도가 얼마인지,

오디오 코덱이 어떤것이며, 채널 카운트와 샘플링 레이트가 얼마인지 등을 분석하는 동작을 수행합니다.

이 수행을 위해서는 분석을 위한 최소한의 데이터를 서버에서 받아야  하고요...

 

참고로  아래  링크의 그림에 나오듯 

http://developer.android.com/reference/android/media/MediaPlayer.html#StateDiagram

안드로이드는 prepareAsync 후 prepared 가 오기 전  start를 부르면 IlligalstateException이 발생합니다.

 

 

 

 

사악미소 (65,330 포인트) 님이 2014년 9월 16일 답변
블랙이요블랙님이 2014년 9월 17일 채택됨
...