2011-10-14 1 views
1

MPMoviePlayerController 클래스의 playableDuration 속성은 항상 iOS 5에서 0을 반환합니다. 이전 버전의 iOS에서 제대로 작동하는 것으로 나타났습니다. 진행 막대 값을 설정하는 데 사용합니다.playableDuration은 iOS5에서 0을 반환합니다.

4.x SDK에서 잘 작동하는 코드 조각 (즉, playableDuration 속성이 스트림을 버퍼링하는 동안 올바른 0이 아닌 값을 반환 함)이지만 SDK 5.x에서는 항상 0을 반환합니다.

- (void) updateMeter { 
NSLog(@"playableDuration = %f", streamPlayer.playableDuration); 
} 

- (void)viewDidLoad 
{ 

[super viewDidLoad]; 
streamPlayer = [[MPMoviePlayerController alloc] 
initWithContentURL:[NSURL URLWithString:@"http://99.198.118.250:8158/"]];  

NSTimer *updateBarTimer = [NSTimer scheduledTimerWithTimeInterval:0.5 
          target:self selector:@selector(updateMeter)  
          userInfo:nil repeats:YES]; 

streamPlayer.controlStyle = MPMovieControlStyleEmbedded; 
[streamPlayer play]; 

} 
+0

안녕하세요. 문제가있는 부분을 이해할 수있는 코드가 필요합니다. Thx – TheRonin

답변

0

은 정확한 코드를 사용하지만, 함께 URL을 대체 : 나는 세그먼트 .m3u8 파일 플레이어를 지적하지 않는 한 코드가 실패 나를 위해 http://devimages.apple.com/iphone/samples/bipbop/gear1/prog_index.m3u8

합니다.

내 컴퓨터에서 로컬로 .mp4 동영상과 .mp3 오디오 파일을 사용하여 일부 테스트를 수행했는데 두 파일 모두 올바르게 작동합니다.

나는 여기에서 추측하고있다. 그러나 나는 MPMoviePlayerController가 미디어 항목을 스트리밍하는 동안 .m3u8 파일을 사용하여 플레이어 아이템 데이터를 즉석에서 추론 할 가능성이 있다고 생각한다. 그것은 어쨌든 내 추측입니다. 궁금한 점은 이것이 사실 인 경우 귀하의 URL에 대해 전혀 작동하지 않는 이유는 무엇입니까? 그럼 내 다음 댓글로 안내합니다 ...

MediaPlayer 프레임 워크가 아닌 AVFoundation을 사용하면 더 나은 결과를 얻을 수 있습니다. 나는 내 자신의 일에서도 그것을 바꿨다. 덜 "미리 패키지화 된"것이지만 훨씬 더 많은 제어 기능을 제공합니다.

+0

Chris에게 감사드립니다. 위의 테스트 URL을 사용해도 playableDuration 값은 항상 0입니다. iOS5에서 위 코드 (및 귀하의 url)를 사용하면 playableDuration에 대해 0이 아닌 값을 얻음을 확인할 수 있습니까? – RawMean

+0

새로운 Xcode 4.3.2 단일보기 프로젝트의보기 컨트롤러에 직접 코드를 복사/붙여 넣기하여 기존 viewDidLoad를 자신의 것으로 대체합니다. 그런 다음 MediaPlayer 프레임 워크가 포함되었습니다. 인터페이스에 MPMoviePlaybackController streamPlayer ivar도 추가해야했습니다. playableDuration 속성은보고하는 것처럼 0을 반환했습니다. 그런 다음 URL을 위의 URL로 변경하여 playableDuration을 가져올 수있었습니다. 나는 똑같은 절차를 똑같은 결과로 얻었습니다. iPad 5.1 시뮬레이터를 사용하여 테스트했습니다. – GnarlyDog