iOS 9:使用AVPlayerViewController Swift。 (划掉播放按钮)

时间:2015-10-27 16:25:15

标签: ios swift avfoundation avkit

我在ios设备和模拟器中播放视频内容时遇到了一些麻烦。

目标:从此处给出的在线资源中流式传输视频: public video streams using hls使用AVPlayerViewController,了解其运作方式。

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

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) (     &#34;&#34 ;,     &#34;&#34 ;,     &#34;&#34 ;,     &#34;&#34 ;,     &#34;&#34 ;,     &#34;&#34 ;,     &#34;&#34 ;,     &#34;&#34; )

2 个答案:

答案 0 :(得分:5)

原来这是愚蠢的事情,只需要改变:

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

with:

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

答案 1 :(得分:0)

您似乎没有正确设置AVPlayerLayer。

查看AVPlayerLayer的文档:&#34;返回AVPlayerLayer的实例以显示指定AVPlayer的视觉输出。&#34;

example hierarchy from the AVFoundation Programming Guide