2016-03-30 16 views
0

私はAVPlayerのビデオフレームを画面サイズの75%のように設定し、透明性を利用して背景ビューを表示させようとしています。ビデオフレームを設定するAVPlayer

しかし、私は新しいVCのサイズを設定することができませんでした、それは常に全幅を取る。ここで

は私のコードです:

import AVKit 
import AVFoundation 

class VideoPlayer { 

// ---------------------------------------------------------------------------------- 
// MARK: - Properties 
// ---------------------------------------------------------------------------------- 
var videoName = "here video url" 
let playerViewController = AVPlayerViewController() 

// ---------------------------------------------------------------------------------- 
// MARK: - Setup 
// ---------------------------------------------------------------------------------- 
func setupAndPlayVideo(sourceViewController: UIViewController) { 

    // Get video URL 
    let videoURL = urlForFile(videoName) 
    let player = AVPlayer(URL: videoURL!) 

    // Grey transparent background 
    playerViewController.view.backgroundColor = UIColor(red: 0.4, green: 0.4, blue: 0.4, alpha: 0.5) 

    // Prevent user from pausing/dismissign the video 
    playerViewController.showsPlaybackControls = false 

    // Present the video player VC and play video 
    playerViewController.player = player 

    // This does not change anything (sample hard coded values) 
    playerViewController.view.frame = CGRectMake(0, 0, 300, 300) 

    sourceViewController.presentViewController(playerViewController, animated: true) { 
     self.playerViewController.player!.play() 
    } 
} 
} 

EDIT

だから私は自分の戦略を変更し、私のストーリーボードにAVPlayerViewControllerを追加することにしました。ここで

は、私は私のビデオを再生するために使用するコードです:

// Game over 
    case PapooSegue.GameEndSegue.rawValue: 

     // Get photo VC 
     let videoVC = segue.destinationViewController as! AVPlayerViewController 

     // Get video URL and provide it to the player 
     let videoName = papooBrain!.getGameOverVideoName() 
     let videoURL = urlForFile(videoName) 
     videoVC.player = AVPlayer(URL: videoURL!) 

     // Set grey/transparent background 
     videoVC.view.backgroundColor = UIColor(red: 0.5, green: 0.5, blue: 0.5, alpha: 0.6) 

     // Play video 
     videoVC.player?.play() 

問題はまだ同じです。私はAVPlayerLayer as suggested in this postと遊ぶことを試みたが、私は2つの動画の再生になってしまった:

  • 私は
  • カスタムフレームと一つに推測videoGravityに延伸された1

Iドン私はこれらの演奏にどれだけ適切な大きさを持てるかを知っていません。

+0

申し訳ありませんが、デフォルトでavplayerviewocntrollerを使用しています。この場合は、childviewcontrollerを使用して必要なものを取得する必要があります。 –

+0

私はあなたの提案を得ることができないのではないかと恐れています。/ – H4Hugo

+0

hmm、この場合は何かを試してみましょう:D。申し訳ありませんが私の間違いは答えたとき。 –

答えて

0

私が間違っている場合は私を修正しますが、別のView ControllerでVideoPlayerクラスを使用しているようです。 VideoPlayerクラスではなく、そのVCからフレームを制御できるはずです。あなたがのVideoPlayer VARを作成するVideoPlayerを含むVCに行くのであれば -

Example: var videoPlayer : VideoPlayer! 

その後、あなたのviewDidLoadに、あなたの関数を呼び出すことができるはずです。言いますと

videoPlayer.setUpAndPlayVideo 

希望します。

+0

関数の後ろに角括弧()が付いているので、videoPlayer.setUpAndPlayVideoはvideoPlayer.setUpAndPlayVideo()になります。 –