我在ios设备和模拟器中播放视频内容时遇到了一些麻烦。
目标:从此处给出的在线资源中流式传输视频:
public video streams using hls使用AVPlayerViewController
,了解其运作方式。
这始终导致没有抛出错误,但是视图控制器向我展示了这个视图。
我决定退后一步测试一个本地资源,所以我在quicktime(.m4v)中拍摄了一个短屏捕获并将其保存到项目中。这导致完全相同的行为,没有报告错误。
以下是代码(导入AVKit
和AVFoundation
):
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; )
答案 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)