1

MPMoviePlayerController を使用してライブ ストリーミング ビデオを再生しています。使用しているコードは次のとおりです。

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

ビデオはすべての方向で再生されます。ただし、ムービープレーヤーの上に、ビデオをスケーリングできるボタンを 1 つ追加しました。

mediaplayer フレームワークでは、MPMovieScalingModeNone、MPMovieScalingModeAspectFit、MPMovieScalingModeAspectFill および MPMovieScalingModeFillタイプのスケーリング モード オプションがあることを知っています。ボタンが押されると、スケーリング モードが MPMovieScalingModeAspectFill に設定され、2 回目に押されると MPMovieScalingModeAspectFit になります。これはiPhoneでもうまく機能します。しかし、 iPad ランドスケープ モードを使用しているときに、スケーリング操作を行うことができない場合があります。iPad がランドスケープ モードの場合、フィットまたはフィル スケーリング モードを使用することもできません。

なんで ?何が原因でしょうか?

4

2 に答える 2

1

ビデオの縦横比が既にディスプレイ (ビュー) の縦横比に完全に適合している場合、フィット/フィル操作は効果がありません。これは仕様によるものであり、問​​題ではありません。

そのような完璧なフィットが利用可能になったら、そのボタンを非表示にするか無効にする必要があります. ビデオのアスペクト比をビューのアスペクト比と比較するには、プレーヤーの naturalSize プロパティを使用します。

naturalSize

ムービー フレームの幅と高さ。(読み取り専用)

@property (nonatomic, readonly) CGSize naturalSize

討論

このプロパティは、ビデオのクリーン アパーチャを正方形ピクセルで報告します。したがって、報告された寸法は、アナモルフィック コンテンツとアパーチャ モードを考慮に入れています。

ムービーの自然なサイズは、再生中に変化する可能性があります。これは通常、ストリーミング コンテンツのビットレートが変更された場合、または再生がオーディオのみとオーディオとビデオの組み合わせの間で切り替わった場合に発生します。

于 2012-09-04T21:19:26.340 に答える
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
}];
于 2012-09-04T09:49:17.623 に答える