【问题标题】:Play video in view controller在视图控制器中播放视频
【发布时间】:2016-04-21 08:19:52
【问题描述】:

仅供参考,我正在使用这个 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 中却可以正常工作。有什么建议可能是错误的吗?

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    实际上玩家还没有真正添加到您的视图中。

    请按照此将其作为子视图控制器添加到您的视图中。

     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)
    

    【讨论】:

    • 上传文件时出现问题..我不明白..使用另一个.mp4文件时它工作正常。
    猜你喜欢
    • 1970-01-01
    • 2012-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-09
    相关资源
    最近更新 更多