ios - 在 View Controller 中播放视频

标签 ios swift

仅供引用,我正在使用这个 Github 播放器:https://github.com/piemonte/Player

我正在尝试播放视频,但无法播放。在 View Controller 的 UIView 上,我使用背景色蓝色,当我运行这个项目时,我只看到一个没有播放器的 bue 背景。这是我的代码:

import UIKit
import Player
import AVFoundation

class ViewController: UIViewController, PlayerDelegate {

    @IBOutlet var myView: UIView!

    private var player: Player!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        let fileUrl = NSURL(string: "https://parseapi.back4app.com/files/SAQY2fBCiob9UMqITqAEMo7UxNsU6MCCUURf53Ee/d349a0bdd0962cb0f570c95621aee6df_video.mp4")

        self.player = Player()
        self.player.delegate = self
        player.view.frame.size.width = UIScreen.mainScreen().bounds.size.width
        player.view.frame.size.height = player.view.frame.size.width

        player.fillMode = AVLayerVideoGravityResizeAspectFill
        player.view.sizeToFit()
        myView.addSubview(player.view)

        let videoUrl: NSURL = fileUrl!
        self.player.setUrl(videoUrl)
        self.player.playFromBeginning()

        self.player.playbackLoops = true

        let tapGestureRecognizer: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "handleTapGestureRecognizer:")
        tapGestureRecognizer.numberOfTapsRequired = 1
        self.player.view.addGestureRecognizer(tapGestureRecognizer)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    // MARK: PlayerDelegate Start

    func handleTapGestureRecognizer(gestureRecognizer: UITapGestureRecognizer) {
        switch (self.player.playbackState.rawValue) {
        case PlaybackState.Stopped.rawValue:
            self.player.playFromBeginning()
        case PlaybackState.Paused.rawValue:
            self.player.playFromCurrentTime()
        case PlaybackState.Playing.rawValue:
            self.player.pause()
        case PlaybackState.Failed.rawValue:
            self.player.pause()
        default:
            self.player.pause()
        }
    }

    func playerReady(player: Player) {
    }

    func playerPlaybackStateDidChange(player: Player) {
    }

    func playerBufferingStateDidChange(player: Player) {
    }

    func playerPlaybackWillStartFromBeginning(player: Player) {
    }

    func playerPlaybackDidEnd(player: Player) {
    }

    /* override func awakeFromNib() {

     self.collectionView.autoresizesSubviews = true
     self.collectionView.autoresizingMask = UIViewAutoresizing.FlexibleWidth
     self.collectionView.translatesAutoresizingMaskIntoConstraints = true
     }*/

    // MARK: PlayerDelegate Stop
}

尝试 2:

override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        let fileUrl = NSURL(string: "https://parseapi.back4app.com/files/SAQY2fBCiob9UMqITqAEMo7UxNsU6MCCUURf53Ee/d349a0bdd0962cb0f570c95621aee6df_video.mp4")

        self.player = Player()
        self.player.delegate = self
        self.player.view.frame = self.view.bounds

        self.addChildViewController(self.player)
        self.view.addSubview(self.player.view)
        self.player.didMoveToParentViewController(self)

        let videoUrl: NSURL = fileUrl!
        self.player.setUrl(videoUrl)
        self.player.playFromBeginning()

        self.player.playbackLoops = true

        let tapGestureRecognizer: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "handleTapGestureRecognizer:")
        tapGestureRecognizer.numberOfTapsRequired = 1
        self.player.view.addGestureRecognizer(tapGestureRecognizer)
    }

当我尝试在 Safari 中打开该链接时,它不起作用,但在 Chrome 中它工作正常。.有什么建议可能是错误的吗?

最佳答案

实际上,播放器尚未真正添加到您的 View 中。

请按照此操作将其作为 subview Controller 添加到您的 View 中。

 self.player = Player()
 self.player.delegate = self
 self.player.view.frame = self.view.bounds

 self.addChildViewController(self.player)
 self.view.addSubview(self.player.view)
 self.player.didMoveToParentViewController(self)

关于ios - 在 View Controller 中播放视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36763780/

相关文章:

ios - 数组中的多个字典和检查重复键 - Objective C

swift - 如何将 [Int] 转换为 int?

ios - 两个不冲突的约束创建 NSLayoutConstraint 错误

ios - 奇怪的错误,有些时候 flutter 自动停止并开始执行

iphone - 用户使用 Anyconnect、F5 BIG-IP Edge 连接到 VPN 后,在 objective-c 中使用 VPN

iOS IAP 恢复不起作用

swift - 用户输入作为全局变量以显示来自不同 View 的文本

iOS 11 使用 ATS 从 HTTP 加载图像

xcode - Google Ads 的链接器命令失败,退出代码为 1(使用 -v 查看调用)

ios - AVAudioPlayer 不播放任何声音