2011-11-22 3 views
2

내 구성 요소 중 하나가 MPMoviePlayerController를 많이 사용하고 최근에는 이상한 버그를 보여줍니다. 표준 사용자 인터페이스 (예 : MPMoviePlayerController.controlStyle = MPMovieControlStyleFullscreen;) 을 사용하는 경우 플레이어는 재생/일시 중지 버튼 (내 스크린 샷 중간에있는 물건)의 상태를 절대로 변경하지 않습니다.MPMoviePlayer 표준 인터페이스 재생/일시 중지 상태 반영 문제

enter image description here

기능은 그대로 유지하지만, 플레이어의 상태는 UI에 의해 반영되지 않습니다.

동영상이 재생되는 동안 화면을 두드려 컨트롤을 불러 오면 재생 기호가 나타납니다. 내가 예상하는 것은 플레이어가 현재 플레이하고있을 때 멈춤 기호가 될 것입니다. 재생 기호를 두 드릴 때 플레이어는 일시 중지 모드로 들어갑니다. 그러나 기호는 바뀌지 않습니다. 재생 심볼을 다시 누르면 플레이어는 예상대로 재생을 계속합니다.

문제는 iOS5에서 도입되었으며 이전 iOS 버전에서는 발생하지 않았습니다.

iOS5 문제의 유효성을 검사하기 위해 자체 프레임 워크를 사용하지 않는 최소한의 플레이어를 만들었지 만 문제가 발생하지 않았으므로이 코드를 트리거해야합니다. 불행히도, 제 코드는 대단합니다 (약 3k 라인). 그래서 여기에 게시 할 수 없습니다.

누군가가 소스 코드없이이 질문에 대답 할 수있는 가능성이 내 코드에 직접 연결되어있는 것처럼 매우 슬림하다는 것을 알고 있습니다. 내가 지금까지 필사적으로, 나는 방금 기회를 잡았고 약간의 경이로움에 대한 희망을 품었다, 누군가는 실제로 그런 문제를 가지고 있었고, 그것을 발동/제거하는 방법을 안다.

답변

1

글쎄, 내가 답을 찾을 것 (무엇을 나는 iOS5를 버그 부를 것이다) ...

MPMoviePlayerController가 재생 버튼의 상태에 자극 받고 그 이유를 간단하게 내 초기화 코드의 순서가 있었다 .

이 문제를 유발하려면이 코드를 실행하기 만하면됩니다.

moviePlayer = [[MPMoviePlayerController alloc] init]; 
moviePlayer.shouldAutoplay = YES; 
moviePlayer.fullscreen = NO; 
moviePlayer.view.frame = self.view.bounds; 
moviePlayer.currentPlaybackTime = 0.0; 
moviePlayer.initialPlaybackTime = 0.0; 
[moviePlayer setContentURL:[NSURL URLWithString:@"http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8"]]; 
[self.view addSubview:moviePlayer.view]; 

유료/일시 중지 상태가 변경되지 않은 플레이어 UI가 표시됩니다.

다시 정상적으로 작동하려면 재생 시간을 설정하기 전에 setContentURL 호출을 이동해야합니다.

moviePlayer = [[MPMoviePlayerController alloc] init]; 
moviePlayer.shouldAutoplay = YES; 
moviePlayer.fullscreen = NO; 
moviePlayer.view.frame = self.view.bounds; 
[moviePlayer setContentURL:[NSURL URLWithString:@"http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8"]]; 
moviePlayer.currentPlaybackTime = 0.0; 
moviePlayer.initialPlaybackTime = 0.0; 
[self.view addSubview:moviePlayer.view]; 

Apple (Radar Bug ID # 10484668)에서 버그를 제출 했으므로 답변에 계속 게시됩니다.

OpenRadar Bug Report

+0

동일한 문제가 발생했으며 실제로 setContentPlaybackTime 함수와 관련이 있습니다. – WilsonL

1

나 또한 자주이 문제를보고 있었다,하지만 불행히도 단순히 초기 및 재생 시간을 setContentURL에 호출의 순서를 전환하고 설정이 차이를하지 않았다.

내가 잘못하고있는 것을 발견했습니다. 0을 지정해야 할 때 스트림 시작을 나타 내기 위해 재생 시간을 -1로 설정했습니다. 이 문제를 해결하면 나를 위해 문제가 해결되었습니다.