I'm trying to play a video from a server using Swift.
I have imported MediaPlayer framework, here is my code:
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 } }
I only get a black box when I run in the simulator but no video is playing no matter where I try to load a video from.
UPDATE
Here is the current code
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()
This code interestingly plays ~2 seconds of video before going black again!
In the Project Navigator, select the Main. storyboard file and open the assistant editor. Control-drag from the Play Video button to the ViewController. swift class to add a new @IBAction method called playVideo .
Open Xcode. Select File -> New -> Project... Choose the Single View Application template. Enter a suitable product name, your organization and identifier.
UPDATE 2019, Swift 4:
MPMovieControlStyle' was deprecated in iOS 9.0: Use AVPlayerViewController in AVKit.
So, following the advice, let's change it. Original answer from 2016 is below.
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() } } }
The original answer:
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 } }
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() } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With