2011-10-25 3 views
0

나는 안드로이드 튜토리얼 here의 방법을 사용하여 내 모토로라 드로이드 한 비디오를 스트리밍하고있어에서로 비디오를 야기한다. 내가 연주하고 싶은 두 가지 형식과는 다른 동작이 나타납니다. 첫 번째 유형 (youtube lq 3gp)은 정상적으로 재생됩니다. TIOverlay 기능 (그래서 비디오)를 실행하지 않습니다 전에 비디오가 오디오와 동기화의 인출되면 두 번째 유형 (유튜브 본부의 MP4는) 다음, 오디오를 재생하기 시작합니다. 나는 잘 작동하는 모바일 YouTube 사이트에서 재생되는 형식이기 때문에 hq mp4 형식이 내 휴대폰에서 지원된다는 것을 알고 있습니다. 형식에 대한 자세한 내용은 here입니다.안드로이드 MediaPlayer를 지연 표면 무승부 동기화

그래서 내가 하나가 실행하는 TIOverlay을 강제 할 수있는 방법, 또는 그것을 준비하고, 그 시점까지 비디오를 시작하지 수신하는 방법이 필요합니다 같아요. 아래의 일부 logcat 출력은 흐름을 보여줍니다. 두 경우 모두 onPrepared()가 호출 될 때 흥미 롭습니다. 3gp는 onPrepared() 전후에 TIOverlay 호출을하는 것처럼 보이지만 mp4는 이후에만 수행합니다.

편집 : 동일한 코드가 Motorola Droid 3에서 작동하는 것으로 보입니다. 그 비디오 형식이 내 Droid 1의 YouTube에서 작동하는 경우에도 내 앱에서도 작동해야합니다. 나는 조금 버퍼링 될 때까지 동영상을 재생 기다리고했습니다. 이 방법으로 문제를 해결할 수있을뿐만 아니라 비디오를 시작할 때 버퍼가 다시 시작되었습니다.

3GP :

10-25 16:56:26.750: DEBUG/TIOverlay(1103): overlay_createOverlay:IN w=176 h=144 format=22 
10-25 16:56:26.946: INFO/Overlay(1103): v4l2_overlay_init:: w=480 h=854 
10-25 16:56:26.946: INFO/Overlay(1103): v4l2_overlay_init:: w=176 h=144 
10-25 16:56:26.946: INFO/Overlay(1103): v4l2_overlay_init:: w=176 h=144 
10-25 16:56:26.961: INFO/Overlay(1103): 8 buffers allocated 4 requested 
10-25 16:56:26.961: INFO/Overlay(1103): buffer cookie is 2 
10-25 16:56:26.961: INFO/TIOverlay(1103): Opened video1/fd=138/obj=003a2160/shm=135/size=4096 
10-25 16:56:26.961: DEBUG/TIOverlay(1103): overlay_createOverlay: OUT 
10-25 16:56:26.961: INFO/TIOverlay(1103): Nothing to do! 
10-25 16:56:26.969: INFO/Overlay(1014): query buffer, mem=1 type=2 index=0 
10-25 16:56:26.969: INFO/Overlay(1014): query buffer, mem=1 type=2 index=1 
10-25 16:56:26.969: INFO/Overlay(1014): query buffer, mem=1 type=2 index=2 
10-25 16:56:26.969: INFO/Overlay(1014): query buffer, mem=1 type=2 index=3 
10-25 16:56:26.969: INFO/Overlay(1014): query buffer, mem=1 type=2 index=4 
10-25 16:56:26.969: INFO/Overlay(1014): query buffer, mem=1 type=2 index=5 
10-25 16:56:26.969: INFO/Overlay(1014): query buffer, mem=1 type=2 index=6 
10-25 16:56:26.969: INFO/Overlay(1014): query buffer, mem=1 type=2 index=7 
10-25 16:56:26.969: INFO/Overlay(1014): query buffer, mem=1 type=2 index=0 
10-25 16:56:26.969: INFO/TIOverlay(1014): Buffer/0/addr=4140a000/len=53248 
10-25 16:56:26.969: INFO/Overlay(1014): query buffer, mem=1 type=2 index=1 
10-25 16:56:26.969: INFO/TIOverlay(1014): Buffer/1/addr=41417000/len=53248 
10-25 16:56:26.969: INFO/Overlay(1014): query buffer, mem=1 type=2 index=2 
10-25 16:56:26.969: INFO/TIOverlay(1014): Buffer/2/addr=41424000/len=53248 
10-25 16:56:26.969: INFO/Overlay(1014): query buffer, mem=1 type=2 index=3 
10-25 16:56:26.969: INFO/TIOverlay(1014): Buffer/3/addr=41431000/len=53248 
10-25 16:56:26.969: INFO/Overlay(1014): query buffer, mem=1 type=2 index=4 
10-25 16:56:26.969: INFO/TIOverlay(1014): Buffer/4/addr=4143e000/len=53248 
10-25 16:56:26.969: INFO/Overlay(1014): query buffer, mem=1 type=2 index=5 
10-25 16:56:26.969: INFO/TIOverlay(1014): Buffer/5/addr=4144b000/len=53248 
10-25 16:56:26.977: DEBUG/TI_Video_Decoder(1014): VIDDEC_SendCommand: Received request from omx client to change state to 2 
10-25 16:56:26.985: DEBUG/TI_Video_Decoder(1014): Handle request for state transition: 1 => OMX_StateIdle 
10-25 16:56:26.985: DEBUG/d(2220): videosizechanged() 
10-25 16:56:27.102: DEBUG/TI_Video_Decoder(1014): OMX_StateIdle state reached 
10-25 16:56:27.305: INFO/PlayerDriver(1014): buffering (15) 
10-25 16:56:28.235: DEBUG/TI_Video_Decoder(1014): VIDDEC_SendCommand: Received request from omx client to change state to 3 
10-25 16:56:28.243: WARN/MediaPlayer(2220): info/warning (1, 44) 
10-25 16:56:28.258: INFO/MediaPlayer(2220): Info (1,44) 
10-25 16:56:28.258: DEBUG/d(2220): onPrepared() 
10-25 16:56:28.282: VERBOSE/BufferAllocOmap34xx(1014): BufferAllocOmap34xx::removeRef() 
10-25 16:56:28.290: INFO/Overlay(1014): v4l2_overlay_init:: w=176 h=144 
10-25 16:56:28.290: INFO/Overlay(1014): v4l2_overlay_init:: w=176 h=144 
10-25 16:56:28.290: INFO/Overlay(1014): v4l2_overlay_init:: w=176 h=144 
10-25 16:56:28.290: INFO/Overlay(1014): 8 buffers allocated 4 requested 
10-25 16:56:28.290: INFO/Overlay(1014): buffer cookie is 2 
10-25 16:56:28.290: INFO/Overlay(1014): query buffer, mem=1 type=2 index=0 
10-25 16:56:28.290: INFO/Overlay(1014): query buffer, mem=1 type=2 index=1 
10-25 16:56:28.290: INFO/Overlay(1014): query buffer, mem=1 type=2 index=2 
10-25 16:56:28.290: INFO/Overlay(1014): query buffer, mem=1 type=2 index=3 
10-25 16:56:28.290: INFO/Overlay(1014): query buffer, mem=1 type=2 index=4 
10-25 16:56:28.290: INFO/Overlay(1014): query buffer, mem=1 type=2 index=5 
10-25 16:56:28.290: INFO/Overlay(1014): query buffer, mem=1 type=2 index=6 
10-25 16:56:28.290: INFO/Overlay(1014): query buffer, mem=1 type=2 index=7 
10-25 16:56:28.297: INFO/TIOverlay(1014): Postponing Stream Enable/1/0 
10-25 16:56:28.297: INFO/Overlay(1014): query buffer, mem=1 type=2 index=0 
10-25 16:56:28.297: INFO/TIOverlay(1014): Buffer/0/addr=4140a000/len=53248 
10-25 16:56:28.297: INFO/Overlay(1014): query buffer, mem=1 type=2 index=1 
10-25 16:56:28.297: INFO/TIOverlay(1014): Buffer/1/addr=41417000/len=53248 
10-25 16:56:28.297: INFO/Overlay(1014): query buffer, mem=1 type=2 index=2 
10-25 16:56:28.297: INFO/TIOverlay(1014): Buffer/2/addr=41424000/len=53248 
10-25 16:56:28.297: INFO/Overlay(1014): query buffer, mem=1 type=2 index=3 
10-25 16:56:28.297: INFO/TIOverlay(1014): Buffer/3/addr=41431000/len=53248 
10-25 16:56:28.297: INFO/Overlay(1014): query buffer, mem=1 type=2 index=4 
10-25 16:56:28.297: INFO/TIOverlay(1014): Buffer/4/addr=4143e000/len=53248 
10-25 16:56:28.297: INFO/Overlay(1014): query buffer, mem=1 type=2 index=5 
10-25 16:56:28.297: INFO/TIOverlay(1014): Buffer/5/addr=4144b000/len=53248 
10-25 16:56:28.891: DEBUG/dalvikvm(2050): GC_EXPLICIT freed 2271 objects/138840 bytes in 229ms 
10-25 16:56:28.966: INFO/PlayerDriver(1014): buffering (15) 
10-25 16:56:29.930: WARN/MediaPlayer(2220): info/warning (1, 44) 
10-25 16:56:30.258: INFO/TIOverlay(1103): Position/X0/Y0/W0/H0 
10-25 16:56:30.258: INFO/TIOverlay(1103): Adjusted Position/X0/Y200/W480/H0 
10-25 16:56:30.258: INFO/TIOverlay(1103): Rotation/0 
10-25 16:56:30.266: INFO/Overlay(1103): v4l2_overlay_set_position:: w=480 h=854 
10-25 16:56:30.266: INFO/Overlay(1103): v4l2_overlay_set_position:: w=480 h=392 
10-25 16:56:30.266: INFO/Overlay(1103): dumping driver state: 
10-25 16:56:30.266: INFO/Overlay(1103): output pixfmt: 
10-25 16:56:30.266: INFO/Overlay(1103): w: 176 
10-25 16:56:30.266: INFO/Overlay(1103): h: 144 
10-25 16:56:30.266: INFO/Overlay(1103): color: 7 
10-25 16:56:30.266: INFO/Overlay(1103): UYVY 
10-25 16:56:30.266: INFO/Overlay(1103): v4l2_overlay window: 
10-25 16:56:30.266: INFO/Overlay(1103): window l: 0 
10-25 16:56:30.266: INFO/Overlay(1103): window t: 200 
10-25 16:56:30.266: INFO/Overlay(1103): window w: 480 
10-25 16:56:30.266: INFO/Overlay(1103): window h: 392 
10-25 16:56:30.266: INFO/Overlay(1103): output crop: 
10-25 16:56:30.266: INFO/Overlay(1103): crop l: 0 
10-25 16:56:30.266: INFO/Overlay(1103): crop t: 0 
10-25 16:56:30.266: INFO/Overlay(1103): crop w: 176 
10-25 16:56:30.266: INFO/Overlay(1103): crop h: 144 
10-25 16:56:30.274: DEBUG/d(2220): surfaceChanged() 
10-25 16:56:30.297: DEBUG/d(2220): videosizechanged() 

MP4 :

10-25 16:51:57.454: DEBUG/d(2071): onPrepared() 
10-25 16:51:58.360: DEBUG/d(2071): surfaceChanged() 
10-25 16:52:02.219: DEBUG/TIOverlay(1103): overlay_createOverlay:IN w=640 h=360 format=22 
10-25 16:52:02.219: INFO/Overlay(1103): v4l2_overlay_init:: w=480 h=854 
10-25 16:52:02.219: INFO/Overlay(1103): v4l2_overlay_init:: w=640 h=360 
10-25 16:52:02.219: INFO/Overlay(1103): v4l2_overlay_init:: w=640 h=360 
10-25 16:52:02.243: INFO/Overlay(1103): 8 buffers allocated 4 requested 
10-25 16:52:02.243: INFO/Overlay(1103): buffer cookie is 2 
10-25 16:52:02.250: INFO/TIOverlay(1103): Opened video1/fd=139/obj=00501e18/shm=108/size=4096 
10-25 16:52:02.250: DEBUG/TIOverlay(1103): overlay_createOverlay: OUT 
10-25 16:52:02.250: INFO/TIOverlay(1103): Position/X0/Y0/W0/H0 
10-25 16:52:02.250: INFO/TIOverlay(1103): Adjusted Position/X0/Y200/W480/H0 
10-25 16:52:02.250: INFO/TIOverlay(1103): Rotation/0 
10-25 16:52:02.250: INFO/Overlay(1103): v4l2_overlay_set_position:: w=480 h=854 
10-25 16:52:02.250: INFO/Overlay(1103): v4l2_overlay_set_position:: w=480 h=270 
10-25 16:52:02.250: INFO/Overlay(1103): dumping driver state: 
10-25 16:52:02.250: INFO/Overlay(1103): output pixfmt: 
10-25 16:52:02.250: INFO/Overlay(1103): w: 640 
10-25 16:52:02.250: INFO/Overlay(1103): h: 360 
10-25 16:52:02.250: INFO/Overlay(1103): color: 7 
10-25 16:52:02.250: INFO/Overlay(1103): UYVY 
10-25 16:52:02.250: INFO/Overlay(1103): v4l2_overlay window: 
10-25 16:52:02.250: INFO/Overlay(1103): window l: 0 
10-25 16:52:02.250: INFO/Overlay(1103): window t: 200 
10-25 16:52:02.250: INFO/Overlay(1103): window w: 480 
10-25 16:52:02.250: INFO/Overlay(1103): window h: 270 
10-25 16:52:02.250: INFO/Overlay(1103): output crop: 
10-25 16:52:02.250: INFO/Overlay(1103): crop l: 0 
10-25 16:52:02.250: INFO/Overlay(1103): crop t: 0 
10-25 16:52:02.250: INFO/Overlay(1103): crop w: 640 
10-25 16:52:02.250: INFO/Overlay(1103): crop h: 360 
10-25 16:52:02.250: INFO/TIOverlay(1103): Postponing Stream Enable/1/0 
10-25 16:52:02.266: INFO/Overlay(1014): query buffer, mem=1 type=2 index=0 
10-25 16:52:02.266: INFO/Overlay(1014): query buffer, mem=1 type=2 index=1 
10-25 16:52:02.266: INFO/Overlay(1014): query buffer, mem=1 type=2 index=2 
10-25 16:52:02.266: INFO/Overlay(1014): query buffer, mem=1 type=2 index=3 
10-25 16:52:02.266: INFO/Overlay(1014): query buffer, mem=1 type=2 index=4 
10-25 16:52:02.274: INFO/Overlay(1014): query buffer, mem=1 type=2 index=5 
10-25 16:52:02.274: INFO/Overlay(1014): query buffer, mem=1 type=2 index=6 
10-25 16:52:02.274: INFO/Overlay(1014): query buffer, mem=1 type=2 index=7 
10-25 16:52:02.282: INFO/Overlay(1014): query buffer, mem=1 type=2 index=0 
10-25 16:52:02.282: INFO/TIOverlay(1014): Buffer/0/addr=420f1000/len=462848 
10-25 16:52:02.282: INFO/Overlay(1014): query buffer, mem=1 type=2 index=1 
10-25 16:52:02.282: INFO/TIOverlay(1014): Buffer/1/addr=4269d000/len=462848 
10-25 16:52:02.282: INFO/Overlay(1014): query buffer, mem=1 type=2 index=2 
10-25 16:52:02.282: INFO/TIOverlay(1014): Buffer/2/addr=4270e000/len=462848 
10-25 16:52:02.282: INFO/Overlay(1014): query buffer, mem=1 type=2 index=3 
10-25 16:52:02.282: INFO/TIOverlay(1014): Buffer/3/addr=4277f000/len=462848 
10-25 16:52:02.282: INFO/Overlay(1014): query buffer, mem=1 type=2 index=4 
10-25 16:52:02.282: INFO/TIOverlay(1014): Buffer/4/addr=427f0000/len=462848 
10-25 16:52:02.282: INFO/Overlay(1014): query buffer, mem=1 type=2 index=5 
10-25 16:52:02.282: INFO/TIOverlay(1014): Buffer/5/addr=42861000/len=462848 
10-25 16:52:02.282: INFO/Overlay(1014): query buffer, mem=1 type=2 index=6 
10-25 16:52:02.282: INFO/TIOverlay(1014): Buffer/6/addr=428d2000/len=462848 
10-25 16:52:02.282: INFO/Overlay(1014): query buffer, mem=1 type=2 index=7 
10-25 16:52:02.289: INFO/TIOverlay(1014): Buffer/7/addr=42943000/len=462848 

답변

0

내가 문제를 해결 한 것으로 보인다. 나의 접근 방식은 (안드로이드 사이트에 example code 복사) 가장 간단한 형태에서 일하는지, 그리고 그것은했다 충분히 확인합니다. 그런 다음 천천히 애플 리케이션의 현재 기능에 그것을 구축하고 여전히 작동합니다. 내 첫 번째 구현에 나는 거점으로 안드로이드 사이트에서 정확한 코드를 사용하지 않았지만 불행하게도 나는, 정확한 원인을 판별 할 수 없습니다. 동영상을 시작하기 전에 seekTo를 수행하는 것만으로도이 문제가 발생할 수있는 것 같습니다. "오디오는 있지만 비디오가 없음"버그가있는 사람은이 구현 방법을 사용하여 가장 간단한 구현에서부터 백업하는 것이 좋습니다.