2011-10-14 61 views
1

還有其他人注意到MPMoviePlayerController類的playableDuration屬性在iOS 5中始終返回0。這用於在以前版本的iOS中正常工作。我用它來設置進度條的值。playableDuration在iOS5中返回0

這是一段在4.x SDK下工作的代碼(即,playableDuration屬性在緩衝流時返回了正確的非零值),但在SDK 5.x下它總是返回零。

- (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

用你確切的代碼,但替換的網址:http://devimages.apple.com/iphone/samples/bipbop/gear1/prog_index.m3u8

對我來說,你的代碼失敗了,除非我指着玩家分段.m3u8文件。

我在本地計算機上用.mp4電影和.mp3音頻文件做了一些測試,兩者都很好。

我在這裏推測,但我相信很可能在流媒體時,MPMoviePlayerController正在使用.m3u8文件來實時推斷播放器項目數據?無論如何,這是我的猜測。有什麼好奇的是,如果是這樣的話,爲什麼它可以爲你的網址工作?這導致我對我的下一個評論...

你可能會有更好的結果使用AVFoundation,而不是MediaPlayer框架。我也在自己的工作中轉向了它。它不太「預先包裝」,只是提供更多的控制。

+0

謝謝克里斯。即使使用上面的測試網址,我也會得到始終爲零的playableDuration值。你可以通過上面的代碼(和你的url)確認在iOS5上,playableDuration的值是否爲非零值? – RawMean

+0

我將代碼直接複製/粘貼到新的Xcode 4.3.2單視圖項目的視圖控制器中,用您的代碼替換現有的viewDidLoad。然後我包含了MediaPlayer框架。我還必須在接口中添加一個MPMoviePlaybackController streamPlayer ivar。 playableDuration屬性返回零,就像您所報告的一樣。 然後,我將網址更改爲我上面包含的網址,並且能夠獲取playableDuration。我剛剛做了完全相同的過程(只需要一秒),結果相同。我使用iPad 5.1模擬器進行測試。 – GnarlyDog