1

工作我使用的MPMoviePlayerController播放的流媒體直播視頻,這是我現在用的代碼是的MPMoviePlayerController縮放模式是不是在iPad景觀模式

[_moviePlayerController.view setFrame:self.view.bounds]; 
[_moviePlayerController prepareToPlay]; 
_moviePlayerController.fullscreen=YES; 
_moviePlayerController.controlStyle = MPMovieControlStyleNone; 
[_moviePlayerController setFullscreen:YES animated:YES]; 
[self.view addSubview:_moviePlayerController.view]; 

視頻在所有方向打。但是我在影片播放器的頂部添加了一個按鈕,可以讓您縮放視頻。

我知道媒體播放器框架,我們有MPMovieScalingModeNone,MPMovieScalingModeAspectFit,MPMovieScalingModeAspectFill和MPMovieScalingModeFill類型的縮放模式選項。 當按下按鈕時,我將縮放模式設置爲MPMovieScalingModeAspectFill,當它被第二次按下MPMovieScalingModeAspectFit時。 這在iPhone中也很棒。但是當我使用iPad景觀模式時,我無法執行任何縮放操作。當iPad處於橫向模式時,我都無法使用Fit或填充縮放模式。

爲什麼?可能是什麼原因 ?

回答

1

如果視頻寬高比已經完全裝配到所述顯示器(視圖)的縱橫比,沒有配合/填充操作有任何影響。這是設計而不是問題。

一旦這種完美適合可用,您應該隱藏或禁用該按鈕。要將視頻寬高比與視圖的寬高比進行比較,請使用播放器的naturalSize屬性。

naturalSize 

電影幀的寬度和高度。 (只讀)

@property (nonatomic, readonly) CGSize naturalSize 

討論

此屬性報告視頻的清潔孔在正方形 像素。因此,報告的尺寸考慮了變形 內容和光圈模式。

在播放 期間,電影的自然尺寸可能會發生變化。這通常發生在流媒體的比特率改變或者回放在音頻和音頻和視頻的組合之間切換時發生。

+0

我想我必須隱藏按鈕。沒有其他選擇對我來說。 :(。我試着用NSLog來告訴你,就像_moviePlayer.naturalsize一樣,在打印寬度和高度時,得到的值爲640 x 480. – Perseus

+0

1024x768的縱橫比爲1.33333,640x480的縱橫比爲1.33333 =>完美契合。 – Till

1

U能夠提供隨機縮放這樣的:

[UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{ 

    moviePlayer.view.transform = CGAffineTransformMakeScale(0.7f, 0.7f); 

} completion:^(BOOL finished){ 
    // if you want to do something once the animation finishes, put it here 
}];