How to play video in ios swift

Viewed 12609

I am new to ios programming, actually I need to stream video URL but i am unable to stream video URL using avplayer, but using avplayer downloaded file i am able to play.Actual problem is my file format is different for example my file name is like this song.apa but it is song.mp4

code:

let avplayerController = AVPlayerViewController()
var avPlayer:AVPlayer?

override func viewDidLoad()
{
    super.viewDidLoad()
    let movieUrl = URL.init(string: "http://techslides.com/demos/sample-videos/small.3gp")
    self.avPlayer = AVPlayer.init(url: movieUrl!)
    self.avplayerController.player = self.avPlayer
}

override func didReceiveMemoryWarning()
{
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

@IBAction func playVideo(_ sender: Any)
{
    self.present(self.avplayerController, animated: true) { 
     self.avplayerController.player?.play()
    }
}
7 Answers

In Swift 3

import Foundation
import AVFoundation
import MediaPlayer
import AVKit


func play()
    {
        let player = AVPlayer(url: "Your Url")
        let playerViewController = AVPlayerViewController()
        playerViewController.player = player
        self.present(playerViewController, animated: true)
        {
            playerViewController.player!.play()
        }


    }

For Swift 3 play video from URL

//AVPlayerViewControllerDelegate // example : class TestAudioVideoVC: UIViewController,AVPlayerViewControllerDelegate

func videoPlay()
    {
        let playerController = AVPlayerViewController()
        playerController.delegate = self

        let videoURL = NSURL(string: "https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4")

        let player = AVPlayer(url: videoURL! as URL)
        playerController.player = player
        self.addChildViewController(playerController)
        self.view.addSubview(playerController.view)
        playerController.view.frame = CGRect(x: 0, y: 64, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height - 64)
        playerController.showsPlaybackControls = true
        player.play()
    }

//MARK: - AVPlayerViewController Delegate -

    func playerViewControllerWillStartPictureInPicture(_ playerViewController: AVPlayerViewController){
        print("playerViewControllerWillStartPictureInPicture")
    }

    func playerViewControllerDidStartPictureInPicture(_ playerViewController: AVPlayerViewController)
    {
        print("playerViewControllerDidStartPictureInPicture")

    }
    func playerViewController(_ playerViewController: AVPlayerViewController, failedToStartPictureInPictureWithError error: Error)
    {
        print("failedToStartPictureInPictureWithError")
    }
    func playerViewControllerWillStopPictureInPicture(_ playerViewController: AVPlayerViewController)
    {
        print("playerViewControllerWillStopPictureInPicture")
    }
    func playerViewControllerDidStopPictureInPicture(_ playerViewController: AVPlayerViewController)
    {
        print("playerViewControllerDidStopPictureInPicture")
    }
    func playerViewControllerShouldAutomaticallyDismissAtPictureInPictureStart(_ playerViewController: AVPlayerViewController) -> Bool
    {
        print("playerViewControllerShouldAutomaticallyDismissAtPictureInPictureStart")
        return true
    }

Play video in swift 5

class ViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()
}

@IBAction func playVideoUsingURL(_ sender: Any) {
    playGlobalVideo()
}

@IBAction func playVideoFromLocalDrive(_ sender: Any) {
    playLocalVideo()
}

func playGlobalVideo() {
    guard let videoURL = URL(string: "http://static.videokart.ir/clip/100/480.mp4") else {
        return
    }
    let player = AVPlayer(url: videoURL)
    let vc = AVPlayerViewController()
    vc.player = player
    present(vc, animated: true) {
        player.play()
    }
}

func playLocalVideo() {
    guard let videoPath = Bundle.main.path(forResource: "movie", ofType: "mov") else {
        return
    }
    let player = AVPlayer(url: URL.init(fileURLWithPath: videoPath))
    let playCtr = AVPlayerViewController()
    playCtr.player = player
    present(playCtr, animated: true) {
        player.play()
    }
}

}

Related