我正在尝试使用Swift从服务器播放视频.
我已经导入了MediaPlayer框架,这是我的代码:
import UIKit
import MediaPlayer
class VideoViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
var url:NSURL = NSURL(string: "http://jplayer.org/video/m4v/Big_Buck_Bunny_Trailer.m4v")
var moviePlayer = MPMoviePlayerController(contentURL: url)
moviePlayer.view.frame = CGRect(x: 20, y: 100, width: 200, height: 150)
self.view.addSubview(moviePlayer.view)
moviePlayer.fullscreen = true
moviePlayer.controlStyle = MPMovieControlStyle.Embedded
}
}
Run Code Online (Sandbox Code Playgroud)
当我在模拟器中运行时,我只得到一个黑盒子,但无论我在哪里尝试加载视频,都没有播放视频.
UPDATE
这是当前的代码
var url:NSURL = NSURL(string: "http://jplayer.org/video/m4v/Big_Buck_Bunny_Trailer.m4v")
var moviePlayer = MPMoviePlayerController(contentURL: url)
moviePlayer.view.frame = CGRect(x: 20, y: 100, width: 200, height: 150)
moviePlayer.movieSourceType = MPMovieSourceType.File
self.view.addSubview(moviePlayer.view)
moviePlayer.prepareToPlay()
moviePlayer.play()
Run Code Online (Sandbox Code Playgroud)
这个代码有趣地播放~2秒的视频再次变黑!
当我从Xcode运行我的应用程序时,很明显我有内存泄漏:
当我呈现一个自定义的ViewController时,内存会增加,但是当我解除它时,它不会再回落.
所以我也使用了仪器的分配工具进行了检查,但这说明了一个不同的故事:
正如您所看到的,当我呈现ViewController时,Instruments会显示尖峰,但是当它被解除时,内存使用量会回落到之前的水平.
我已经检查了我的代码至少15次,我个人找不到任何内存泄漏,因此同意仪器.我还在deinit
我的所有对象中实现了这样的函数,如下所示:
deinit {
print("Deinnited \(id)")
}
Run Code Online (Sandbox Code Playgroud)
并且所有对象都按预期打印到控制台.
会发生什么事?我在用:
Run和Profile的模式都在"debug"中
这是我目前的代码:
var reply = UIBarButtonItem(image: UIImage(named: "reply"), style: UIBarButtonItemStyle.Plain, target: self, action: Selector("reply:"))
self.navigationItem.rightBarButtonItem = reply
Run Code Online (Sandbox Code Playgroud)
右上角的按钮总是模糊的.这是来自iPhone4s设备的屏幕截图,因此它不是与视网膜相关的问题.
我尝试过不同的图像尺寸,范围从30x30到512x512,并使用customView添加图像.这些方法没有解决问题.
提前致谢.