How to embed a Youtube video into my app?

30,364

Solution 1

Xcode 8.2 • Swift 3.0.2

import UIKit

class ViewController: UIViewController {
    @IBOutlet weak var wv: UIWebView!
    override func viewDidLoad() {
        super.viewDidLoad()
        loadYoutube(videoID: "oCm_lnoVf08")
    }
    func loadYoutube(videoID:String) {
        guard
            let youtubeURL = URL(string: "https://www.youtube.com/embed/\(videoID)")
            else { return }
        wv.loadRequest( URLRequest(url: youtubeURL) )
    }
}

Xcode 7.3.1 • Swift 2.x

import UIKit

class ViewController: UIViewController {
    // create an outlet for your webview 
    @IBOutlet weak var wv: UIWebView!
    override func viewDidLoad() {
        super.viewDidLoad()
        // load your you tube video ID
        loadYoutube(videoID: "oCm_lnoVf08")
    }
    func loadYoutube(videoID videoID:String) {
        // create a custom youtubeURL with the video ID
        guard
            let youtubeURL = NSURL(string: "https://www.youtube.com/embed/\(videoID)")
            else { return }
        // load your web request
        wv.loadRequest( NSURLRequest(URL: youtubeURL) )
    }
}

Solution 2

Swift 3/4

You can play youtube video in AVPlayer with the help of XCDYouTubeKit.

Add

pod 'XCDYouTubeKit'

into your project and write a code as below

func playVideo() {

        let playerViewController = AVPlayerViewController()
        self.present(playerViewController, animated: true, completion: nil)

        XCDYouTubeClient.default().getVideoWithIdentifier("KHIJmehK5OA") { (video: XCDYouTubeVideo?, error: Error?) in
            if let streamURL = video?.streamURLs[XCDYouTubeVideoQuality.HD720.rawValue] {
                playerViewController.player = AVPlayer(url: streamURL)
            } else {
                self.dismiss(animated: true, completion: nil)
            }
        }
    }

you can change the quality of video by replacing XCDYouTubeVideoQuality.HD720.rawValue with medium360 or with Small240

Solution 3

Use YouTube-Player-iOS-Helper:

Step 1: add pod "youtube-ios-player-helper", "~> x.y.z" to your Podfile, replace "x.y.z" with the latest version. and run pod install.

Step 2: Implement this code:

import UIKit
import youtube_ios_player_helper
 
class ViewController: UIViewController, YTPlayerViewDelegate {
    @IBOutlet weak var playerView: YTPlayerView!

    override func viewDidLoad() {
        super.viewDidLoad()
        playerView.delegate = self

        let playerVars = ["playsinline": 1] // 0: will play video in fullscreen
        self.playerView.loadWithVideoId("youtubeId", playerVars: playerVars)
    }     
}

Note: Set the rel key to 0 in your playerVars dictionary if you don't want to show related video:

let playerVars = ["playsinline":1, "rel" : 0 ]

Solution 4

I did by using below code on Swift 4+ version

guard let url = URL(string: "<Your YuTube url>")
        else{
            return
        }

let safariViewControllerObject = SFSafariViewController(url: url)
self.present(safariViewControllerObject, animated: true, completion: nil)

Note:- I have imported SafariServices lib

Solution 5

Play youtube video in Swift 4.1

Add Pod pod 'XCDYouTubeKit'

import XCDYouTubeKit in ViewController

func playYoutubeVideo(){

    let strUrl = "https://www.youtube.com/watch?v=9m_K2Yg7wGQ"
    if let range = strUrl.range(of: "=") {
            let strIdentifier = strUrl.substring(from: range.upperBound)
            print("Identifier:\(strIdentifier)")
            let videoPlayerViewController = 
            XCDYouTubeVideoPlayerViewController(videoIdentifier: strIdentifier)
            videoPlayerViewController.present(in: viewYTVideo)
            videoPlayerViewController.moviePlayer.play()
        }
}
Share:
30,364
Admin
Author by

Admin

Updated on July 05, 2022

Comments

  • Admin
    Admin almost 2 years

    I'm trying to create a video player for my Swift app, but I keep getting the error of 'unresolved identifier AVPlayerViewController'. What am I missing?

    I'm a beginner at this, I may have to ask a few thousand times in layman's terms. I've been scouring the internet for perhaps a day now for a video for how to embed a Youtube video into my app, with no results. If you could point me over to a tutorial that would be awesome!

    Thanks!

  • Gaurav Patel
    Gaurav Patel almost 8 years
    I want to open this link but my screen only white not display any download file
  • Leo Dabus
    Leo Dabus almost 8 years
    @GauravPatel Just create a new project and add that code there. I have just tested it here and it works fine Xcode 7.3.1 (AppStore version)
  • ahitt6345
    ahitt6345 almost 7 years
    Im making sure i understand this correctly. You have to have a webview and call loadrequest on a NSURL request. right?
  • AbecedarioPoint
    AbecedarioPoint almost 6 years
    i have embeded YTPlayerView but some video not playing. why this is happen any one know?
  • AbecedarioPoint
    AbecedarioPoint almost 6 years
    @LeoDabus i have used your webview code for playing youtube video. my url is https://www.youtube.com/watch?v=_8aKKEjIO2g&feature=youtu.be and when i load videoID _8aKKEjIO2g it say that This video is unavailable. why this happen do you know?
  • Hemaolle
    Hemaolle over 5 years
    Note that XCDYouTubeKit readme (github.com/0xced/XCDYouTubeKit) says that "XCDYouTubeKit is against the YouTube Terms of Service. The only official way of playing a YouTube video inside an app is with a web view and the iframe player API."
  • Raymond
    Raymond over 4 years
    This pod is too old and haven't been updated. It stops working and no clue why it doesn't work. Don't use this pod anymore.
  • Nassif
    Nassif over 2 years
    I have used the mentioned pod. is there an option to hide the context menu. Also there is inconsistency in player controls. Some times its shows the Quicktime player controls and mostly the general YouTube controls