2015-10-27 50 views
6

我在ios设备和模拟器上播放视频内容时遇到了一些麻烦。iOS 9:使用AVPlayerViewController Swift。 (划掉播放按钮)

目标:使用AVPlayerViewController在线资源给出视频: public video streams using hls,只是为了了解它是如何工作的。

这一直导致没有错误被抛出,但视图控制器呈现给我这个视图。

AvPlayerViewController

我决定退一步测试上的本地资源,所以我在拍摄的QuickTime(的.m4v)短屏幕捕获并将其保存权的项目。这导致完全相同的行为,没有报告错误。

下面是代码(AVKitAVFoundation导入):<CATransformLayer: 0x136ea1030> - changing property masksToBounds in transform-only layer, will have no effect

Xcode中:版本7.1 定位:iOS的9.0

建立到IpadMini 4时见此警告

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() 
    } 
} 

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

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

+0

那么作为一种解决方法,你可以通过调用它的URL打开并播放UIWebView的视频... –

+0

欣赏评论@Neo,但所有这些的目的是了解AVKit和AVKitViewController。 – CostelloNicho

回答

4

原来这是一些愚蠢的,只是不得不改变:

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

有:

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

+0

这也是我的问题。谢谢! –

+0

T_T我花了差不多3个小时才找到这个解决方案。非常感谢! – DevAndArtist

0

看起来你没有正确设置AVPlayerLayer。

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

example hierarchy from the AVFoundation Programming Guide

+0

感谢这篇文章,如果我试图设置和管理我自己的AVplayer,那么你是100%正确的,但是AVPlayerViewController是AVKit的一部分,它应该可以管理开箱即用的所有方面。 – CostelloNicho