【问题标题】:iOS 9: Using AVPlayerViewController Swift. (crossed out play button)iOS 9:使用 AVPlayerViewController Swift。 (划掉的播放按钮)
【发布时间】:2016-01-27 04:18:34
【问题描述】:

我在 ios 设备和模拟器上播放视频内容时遇到了一些问题。

目标:从此处提供的在线资源流式传输视频: public video streams using hls 使用 AVPlayerViewController,只是为了了解它是如何工作的。

这始终没有导致错误被抛出,但是视图控制器向我展示了这个视图。

我决定退后一步并在本地资源上进行测试,因此我在 quicktime (.m4v) 中拍摄了一个简短的屏幕截图并将其保存到项目中。这导致了完全相同的行为,没有报告错误。

这里是代码(AVKitAVFoundation 被导入):

var playerVC : AVPlayerViewController!
var playerItem : AVPlayerItem!
var player : AVPlayer!
var playerLayer: AVPlayerLayer!

override func viewDidAppear(animated: Bool) {

    let bundle = NSBundle.mainBundle()
    let path = bundle.pathForResource("testVideos", ofType: "m4v")
    let url = NSURL.init(string: path!)

    playerItem = AVPlayerItem.init(URL: url!)
    player = AVPlayer.init(playerItem: playerItem)
    playerVC = AVPlayerViewController.init();
    playerVC.player = player;

    self.presentViewController(playerVC, animated: true) { () -> Void in
        self.playerVC.player?.play()
    }
}

在构建到 IpadMini 4 时看到此警告:<CATransformLayer: 0x136ea1030> - changing property masksToBounds in transform-only layer, will have no effect

Xcode:版本 7.1 定位:iOS 9.0

更新 只是来自 AVPlayerViewController 的一些讨厌的约束输出。我不认为这是有贡献的,但这里是:

2015-10-28 15:12:02.777 AVKitTest[4441:94545] 无法同时满足约束。 以下列表中的至少一个约束可能是您不想要的。 尝试这个: (1)查看每个约束并尝试找出您不期望的; (2) 找到添加了一个或多个不需要的约束的代码并修复它。 (注意:如果您看到不理解的 NSAutoresizingMaskLayoutConstraints,请参阅 UIView 属性 translatesAutoresizingMaskIntoConstraints 的文档) ( "", "", "", "", "", "", "", “” )

【问题讨论】:

  • 作为一种解决方法,您可以使用 UIWebView 打开并播放视频,方法是调用其 URL...
  • 欣赏@Neo 的评论,但这一切的目的是为了了解 AVKit 和 AVKitViewController。

标签: ios swift avfoundation avkit


【解决方案1】:

事实证明这很愚蠢,只需要改变:

let url = NSURL.init(string: path!) playerItem = AVPlayerItem.init(URL: url!)

与:

let url = NSURL.init(fileURLWithPath: path!) let playerItem = AVPlayerItem.init(URL: url)

【讨论】:

  • 这也是我的问题。谢谢!
  • T_T 我花了将近 3 个小时才找到这个解决方案。非常感谢!
【解决方案2】:

您似乎没有正确设置 AVPlayerLayer。

查看 AVPlayerLayer 的文档:“返回 AVPlayerLayer 的实例以显示指定 AVPlayer 的视觉输出。”

【讨论】:

  • 感谢您的帖子,如果我尝试设置和管理我自己的 AVplayer,您是 100% 正确的,但 AVPlayerViewController 是 AVKit 的一部分,它应该管理播放器的各个方面盒子。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多