在共享会话中调用 MPMoviePlayerController 黑屏
MPMoviePlayerController Black Screen when called in shared session
我这里有一个 playVideo() 方法:
func playVideo() {
let url = NSURL(string: "http://mtc.cdn.vine.co/r/videos_r2/20660994A41184015287536758784_SW_WEBM_14252654515363566800065.mp4?versionId=X5uVE9shOvYpw7z7.VnePPyihEfx_uWj")
//let url = NSURL(string: videoUrls[videoNumber])
//println(videoUrls[videoNumber])
moviePlayer = MPMoviePlayerController(contentURL: url)
if let player = moviePlayer {
player.view.frame = CGRect(x: 0, y: 0, width: 300, height: 300)
player.view.center = self.view.center
player.prepareToPlay()
player.scalingMode = .AspectFill
player.controlStyle = .None
self.view.addSubview(player.view)
player.play()
}
}
当我直接从 viewDidLoad 调用它时,它没有任何问题。
但是当我试图在共享会话中调用它时:
var task = NSURLSession.sharedSession().dataTaskWithURL(url!, completionHandler: { data,response,error -> Void in
if(error == nil)
{
var err :NSError?
var jsonResult : NSDictionary = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as NSDictionary!
var records: NSArray = (jsonResult["data"]?["records"]) as NSArray
for(var i=0;i<records.count;i++)
{
var strVideo = (records[i]["videoLowURL"] as String);
videoUrls.append(strVideo)
}
}
else
{
println("Error")
}
})
task.resume()
只显示黑屏,没有声音或其他任何东西。
我知道它调用了 playVideo() 方法,但它不能正常工作。
可能是什么问题?
这是我的想法,但可能不会在主线程上调用完成处理程序。所有 UI 的事情都必须在主线程上完成。
分派到主队列使用:
dispatch_async(dispatch_get_main_queue()) {
self.playVideo()
}
我这里有一个 playVideo() 方法:
func playVideo() {
let url = NSURL(string: "http://mtc.cdn.vine.co/r/videos_r2/20660994A41184015287536758784_SW_WEBM_14252654515363566800065.mp4?versionId=X5uVE9shOvYpw7z7.VnePPyihEfx_uWj")
//let url = NSURL(string: videoUrls[videoNumber])
//println(videoUrls[videoNumber])
moviePlayer = MPMoviePlayerController(contentURL: url)
if let player = moviePlayer {
player.view.frame = CGRect(x: 0, y: 0, width: 300, height: 300)
player.view.center = self.view.center
player.prepareToPlay()
player.scalingMode = .AspectFill
player.controlStyle = .None
self.view.addSubview(player.view)
player.play()
}
}
当我直接从 viewDidLoad 调用它时,它没有任何问题。 但是当我试图在共享会话中调用它时:
var task = NSURLSession.sharedSession().dataTaskWithURL(url!, completionHandler: { data,response,error -> Void in
if(error == nil)
{
var err :NSError?
var jsonResult : NSDictionary = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as NSDictionary!
var records: NSArray = (jsonResult["data"]?["records"]) as NSArray
for(var i=0;i<records.count;i++)
{
var strVideo = (records[i]["videoLowURL"] as String);
videoUrls.append(strVideo)
}
}
else
{
println("Error")
}
})
task.resume()
只显示黑屏,没有声音或其他任何东西。
我知道它调用了 playVideo() 方法,但它不能正常工作。
可能是什么问题?
这是我的想法,但可能不会在主线程上调用完成处理程序。所有 UI 的事情都必须在主线程上完成。
分派到主队列使用:
dispatch_async(dispatch_get_main_queue()) {
self.playVideo()
}