【问题标题】:Embed AVPlayerViewController In UIView, Loop, and Display Full Screen In Landscape在UIView中嵌入AVPlayerViewController,循环显示,横屏全屏显示
【发布时间】: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


    【解决方案1】:

    在 VideoPlayerLooped 类中创建一个以横向模式旋转视频的方法:

    func degreeToRotate(_ x: CGFloat) -> CGFloat {
        return .pi * x / 180.0
    }
    

    并在 playVideo(fileName:String, inView:UIView) 方法中添加以下代码行以调用 degreeToRotate() 方法并以横向模式旋转视频:

    let affineTransform = CGAffineTransform(rotationAngle: degreeToRotate(90))\
    videoPlayerLayer?.setAffineTransform(affineTransform)
    

    【讨论】:

    • 如果它对您有帮助,请通过给予“绿色权利”将其添加到正确答案中。谢谢:)
    猜你喜欢
    • 1970-01-01
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多