Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Playing a video file from a server in Swift

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!

like image 944
Mate Hegedus Avatar asked Jul 30 '14 10:07

Mate Hegedus


People also ask

How do you implement video player in Swift?

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 .

How do I add a video to Xcode?

Open Xcode. Select File -> New -> Project... Choose the Single View Application template. Enter a suitable product name, your organization and identifier.


2 Answers

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     } } 
like image 59
Mate Hegedus Avatar answered Sep 24 '22 21:09

Mate Hegedus


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()         }       } 
like image 31
shaiju mathew Avatar answered Sep 22 '22 21:09

shaiju mathew