【发布时间】:2014-09-21 22:59:03
【问题描述】:
我正在尝试使用 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
}
}
当我在模拟器中运行时,我只得到一个黑匣子,但无论我尝试从哪里加载视频,都没有播放视频。
更新
这是当前代码
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()
这段代码有趣地播放了大约 2 秒的视频,然后再次变黑!
【问题讨论】:
-
问题似乎是一样的,但那里发布的解决方案都没有帮助。在这种情况下,Swift 和 Objective-C 可能有什么不同?
-
@Popeye 这个问题的答案在这里同样重要;这是关于 MediaPlayer API,而不是语言。特别是,如果我采用上面的代码并对其进行更改,以便在属性中保留对 moviePlayer 的引用,则它可以正常工作。在该问题的至少三个答案中建议保留实例直到您完成播放视频。
-
好吧,事实证明这个问题是重复的,因为答案完全相同相同。这个问题是关于 MediaPlayer 框架的,而不是关于 Swift 本身的。无论您使用 Swift 还是 Objective-C,答案都完全相同:保持对
MPMoviePlayerController的强烈引用。这是关于框架的,与使用的语言无关。无论您使用 VB、C# 还是 C++,很多关于 .Net 框架的问题也被标记为重复,因为用于实现解决方案的语言与这些问题完全无关。 -
请注意,“Toms Shaji Mathew”的答案可以在不更改任何单词的情况下粘贴到此处,这将是解决此问题的绝佳、完全有效的答案。
标签: ios swift video mpmovieplayercontroller playback