2016-03-30 39 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() 
    } 
} 
} 

编辑

所以我决定改变我的策略,并在我的故事板添加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拉伸我猜
  • 的一个具有自定义框架的一个

我不我不知道如何才能在适当的尺寸下打出一个。

+0

对不起,您正在使用avplayerviewocntroller默认值。所以在这种情况下,你应该使用childviewcontroller来达到你想要的。 –

+0

恐怕我没有得到你的建议:/ – H4Hugo

+0

嗯,让我尝试在这种情况下的任何事情:D。对不起,因为我的错误回答。 –

回答

0

纠正我,如果我错了,但它看起来像你在不同的视图控制器中使用VideoPlayer类。您应该能够控制来自该VC的帧,而不是VideoPlayer类。所以,如果你去VC含有的VideoPlayer创建录像机VAR -

Example: var videoPlayer : VideoPlayer! 

然后在您的viewDidLoad你应该能够调用你的函数。通过说

videoPlayer.setUpAndPlayVideo 

希望这会有所帮助。

+0

这些函数后面跟着括号(),所以videoPlayer.setUpAndPlayVideo变成videoPlayer.setUpAndPlayVideo() –