【发布时间】:2021-12-12 18:14:14
【问题描述】:
我有一个名为 EchoTools 的超声参考应用程序,我在 Storyboard 上的 UIView 元素中使用以下 Swift 5 代码循环播放 mp4 视频。此应用是垂直方向的,但我想显示全屏控件,可扩展视频并旋转为横向。
class VideoPlayerLooped {
public var videoPlayer:AVQueuePlayer?
public var videoPlayerLayer:AVPlayerLayer?
var playerLooper: NSObject?
var queuePlayer: AVQueuePlayer?
func playVideo(fileName:String, inView:UIView)
{
if let path = Bundle.main.path(forResource: fileName, ofType: "mp4")
{
let url = URL(fileURLWithPath: path)
let playerItem = AVPlayerItem(url: url as URL)
_ = try? AVAudioSession.sharedInstance().setCategory(AVAudioSession.Category.playback, mode: .default, options: .mixWithOthers)
videoPlayer = AVQueuePlayer(items: [playerItem])
videoPlayer?.isMuted = true
videoPlayer?.preventsDisplaySleepDuringVideoPlayback = false
playerLooper = AVPlayerLooper(player: videoPlayer!, templateItem: playerItem)
videoPlayerLayer = AVPlayerLayer(player: videoPlayer)
videoPlayerLayer!.frame = inView.bounds
inView.layer.addSublayer(videoPlayerLayer!)
videoPlayer?.play()
}
}
func remove()
{
videoPlayerLayer?.removeFromSuperlayer()
}
}
我的理解是 AVPlayerViewController 可能是必要的,但是否可以修改现有代码,以便我可以在默认情况下显示视频(纵向,循环),同时仍然包含 AVPlayerViewController 固有的控件?
任何人可以散发的光芒将不胜感激。到目前为止,我已经尝试搜索解决方案并修改代码,但收效甚微。
【问题讨论】:
标签: swift loops avplayerviewcontroller