我尝试使用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秒的视频,然后再次变黑!
答案 0 :(得分:53)
更新2019年,Swift 4版本:
'MPMovieControlStyle' was deprecated in iOS 9.0: Use AVPlayerViewController in AVKit.
所以,按照建议,让我们改变它。 2016年的原始答案如下。
import UIKit
import AVKit
import AVFoundation
class ViewController: UIViewController {
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
let url = URL(string: "https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4")!
playVideo(url: url)
}
func playVideo(url: URL) {
let player = AVPlayer(url: url)
let vc = AVPlayerViewController()
vc.player = player
self.present(vc, animated: true) { vc.player?.play() }
}
}
解决了:
import UIKit
import MediaPlayer
class VideoViewController: UIViewController {
var moviePlayer:MPMoviePlayerController!
override func viewDidLoad() {
super.viewDidLoad()
let url:NSURL = NSURL(string: "http://jplayer.org/video/m4v/Big_Buck_Bunny_Trailer.m4v")
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
}
}
答案 1 :(得分:15)
import AVKit
import AVFoundation
class VideoController: UIViewController
override func viewDidLoad()
{
let videoURL = NSURL(string: "VideoUr")
let player = AVPlayer(url: videoURL! as URL)
let playerViewController = AVPlayerViewController()
playerViewController.player = player
self.present(playerViewController, animated: true) {
playerViewController.player!.play()
}
}
答案 2 :(得分:6)
导入库:
import AVKit
import AVFoundation
import MediaPlayer
import AudioToolbox
像这样设置delegaete
AVPlayerViewControllerDelegate
Wrtie漂亮的代码,你想像按钮动作一样玩:
let videoURL = URL(string: "https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4")
let player = AVPlayer(url: videoURL!)
let playervc = AVPlayerViewController()
playervc.delegate = self
playervc.player = player
self.present(playervc, animated: true) {
playervc.player!.play()
}
100%工作和测试
答案 3 :(得分:2)
我刚遇到同样的问题..
MPMoviePlayerController Stops Playing After 5 seconds - Swift
问题是你的var moviePlayer超出了范围。通过在@ Victor-Sigler上面的viewDidLoad之外声明它,可以防止出现黑屏问题。