2016-04-04 28 views
0

ゲームの最後に短いビデオを再生する必要があります。AVPlayerViewControllerでビデオのサイズを設定する

以前のView Controllerのセグを使用して、私のストーリーボードにモーダルプレゼンテーションを使用してAVPlayerViewControllerを作成しました。

しかし、私はビデオが画面全体を覆わないようにしたい。画面サイズの50%(中央)としましょう。ここで

は、私が試したコードです:

import AVKit 
import AVFoundation 
import UIKit 

class VideoPlayerViewController: AVPlayerViewController { 

override func viewDidLoad() { 
    super.viewDidLoad() 
} 

override func viewDidAppear(animated: Bool) { 
    // Play video 
    player?.play() 
} 

override func viewDidLayoutSubviews() { 
    print(videoBounds) 
    self.view.bounds = videoBounds 
} 

}

問題は、ビデオが画面全体にスケールすることである(100×70ピクセルの周りの何かのように)非常に小さいです。私は、デフォルトのサイズはある時点で100 * 100だと思って、それをビデオの比率に合わせて縮尺します。

境界を指定しないと、画面全体に縮尺されます(ビデオの重力は私に選択を許しません)。

viewDidLayoutSubviewsのビュー全体のサイズを小さくすると、このメソッドが複数回呼び出されるため、ビュー境界を変更し続けるため、このメソッドはまだOKではありません。

私はそれがAVPlayerViewControllerと、画面の一部に局所的な映像を表示することがいかに難しい信じられません

...

任意のヘルプ?

答えて

-2

AVPlayerViewControllerは、フルスクリーンで使用することを目的としています。AVPlayerLayerを使用する方がよい場合は、選択したビューでサイズを変更することができます。

let player = AVPlayer(url: myURL) 
let layer = AVPlayerLayer(player: player) 
layer.frame.size = CGSize(100,100) 
layer.frame.origin = myView.center 

player.play() 
+0

これを提案しているAppleのドキュメントはありませんでした。ドキュメントがある場合は、ドキュメントへのリンクを追加してください。 – Rupert

0

ビューコントローラは任意のサイズにすることができます。このように、あなたがしたい場合:

let videoURL = URL(fileURLWithPath: videoPath) 
let player = AVPlayer(url: videoURL) 
let playerViewController = AVPlayerViewController() 
playerViewController.view.frame = CGRect (x:100, y:100, width:200, height:100) 
playerViewController.player = player 

self.addChildViewController(playerViewController) 
self.view.addSubview(playerViewController.view) 
playerViewController.didMove(toParentViewController: self) 

(明らかに、上記のサイズは奇妙ですが、できます。

自動的に管理されるプレーヤーコントロールを表示するには、ViewControllerを使用します。独自のコントロールをロールしたい場合は、おそらくレイヤーが良いでしょう。

VCをフルスクリーン以外で使用しないことを示す答えを修正するためにこれを投稿するだけです。私のためにうまくいくと思う。

関連する問題