gpt4 book ai didi

ios - 设置视频帧AVPlayer

转载 作者:行者123 更新时间:2023-11-30 13:33:48 27 4
gpt4 key购买 nike

我正在尝试设置 AVPlayer 的视频帧,使其占据屏幕尺寸的 75%,并使用透明度让背景 View 可见。

但是,我无法设置新 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()
}
}
}

编辑

所以我决定改变我的策略并在我的 Storyboard中添加一个 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 个视频:

  • 我猜是被视频重力拉伸(stretch)的
  • 带有自定义框架的

我不知道如何才能让其中只有一个以适当的尺寸播放。

最佳答案

如果我错了,请纠正我,但看起来您正在不同的 View Controller 中使用 VideoPlayer 类。您应该能够从该 VC 控制帧,而不是 VideoPlayer 类。因此,如果您转到包含 VideoPlayer 的 VC,请创建 videoPlayer var -

Example: var videoPlayer : VideoPlayer! 

然后在你的 viewdidload 中你应该能够调用你的函数。说

videoPlayer.setUpAndPlayVideo

希望这有帮助。

关于ios - 设置视频帧AVPlayer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36310233/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com