Swift:如何访问全屏HTML视频的播放器对象?

时间:2016-09-01 23:56:28

标签: ios swift

我希望能够在嵌入式浏览器全屏播放HTML视频时保留对接管屏幕的AVPlayer实例的引用。我的第一个方法是:

extension AVPlayerViewController {

    override public func viewDidAppear(animated: Bool) {
      super.viewDidAppear(animated)

      print("herezzzzzzzzzzzzzzzzzzzzzzzzzzz") // prints correctly
      print(self.player) // prints nil
    }
}

然而它总是返回零。所以我正在尝试不同的方法。我想覆盖AVPlayer的初始值设定项或play方法,但如果没有客观的c选择器冲突,我似乎无法做到。

import AVKit
import MediaPlayer

extension AVPlayer {
  override func play() { // this doesn't work. just an example of what i want
    super.play()

    print("do stuff here")
  }
}

有没有办法覆盖AVPlayer的一个实例方法,所以我可以存储对self的引用?或者它甚至不是AVPlayer?

2 个答案:

答案 0 :(得分:1)

您无法覆盖扩展程序中的方法。或者更确切地说,编译器允许您这样做,但它不起作用。请参阅此主题:Overriding methods in Swift extensions

你也不应该继承AVPlayerViewController

为什么你不能只读取创建它的类中的AVPlayerViewController player属性?

答案 1 :(得分:1)

“用于在UIWebView中播放视频内容的最重要的类称为MPAVController和UIMoviePlayerController”。所以你无法获得AVPlayer的实例。

请查看此问题:How to receive NSNotifications from UIWebView embedded YouTube video playback了解更多详情。