簡體   English   中英

使用 AVPlayerViewController 設置視頻大小

[英]Set size for Video with AVPlayerViewController

我需要在游戲結束時播放一段短視頻。

我在我的情節提要上創建了一個 AVPlayerViewController,並使用來自前一個視圖控制器的 segue 進行模態演示。

但是我希望視頻不要覆蓋整個屏幕。 假設屏幕尺寸的 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 中減小整個視圖的大小,仍然不行,因為這個方法被多次調用,所以我一直在改變我的視圖邊界。

我無法相信使用 AVPlayerViewController 在屏幕的一部分上顯示本地視頻是多么困難......

有什么幫助嗎?

您可以將視圖控制器設置為您想要的任何大小。 像這樣,如果你想:

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 的答案,除非在全屏模式下。 對我來說似乎工作正常。

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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM