Как вставить видео Youtube в мое приложение?

Я пытаюсь создать видеопроигрыватель для моего приложения Swift, но я продолжаю получать ошибку "неразрешенный идентификатор AVPlayerViewController". Что мне не хватает?

Я новичок в этом, мне, возможно, придется несколько раз спрашивать в непрофессионалах. Я прочесываю интернет, возможно, целый день для видео о том, как вставлять видео Youtube в мое приложение без каких-либо результатов. Если бы вы могли указать мне на учебник, который был бы потрясающим!

Спасибо!

Ответ 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) )
    }
}

Ответ 2

Используйте YouTube-Player-iOS-Helper:

Шаг 1: добавьте pod 'youtube-ios-player-helper', '0.1.4' в ваш Podfile и запустите pod install.

Шаг 2: Реализуйте этот код:

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)
    }

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

Примечание. Если вы не хотите показывать playerVars видео, установите для ключа rel значение 0 в словаре playerVars.

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

Ответ 3

Свифт 3/4

Вы можете воспроизводить видео на YouTube в AVPlayer с помощью XCDYouTubeKit.

добавлять

под 'XCDYouTubeKit'

в ваш проект и напишите код, как показано ниже

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)
            }
        }
    }

Вы можете изменить качество видео, заменив XCDYouTubeVideoQuality. HD720.rawValue с medium360 или с Small240

Ответ 4

Я сделал с помощью приведенного ниже кода на версии Swift 4+

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

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

Примечание: - Я импортировал SafariServices lib

Ответ 5

Воспроизведение видео на YouTube в Swift 4.1

Добавьте Pod pod 'XCDYouTubeKit'

импортировать XCDYouTubeKit во 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()
        }
}

Ответ 6

Swift 4 для iOS12, вы должны импортировать модуль "WebKit"

Сделайте розетку для WKWebView. Используйте следующую функцию, которую вы должны вызвать в viewDidLoad():

func getVideo(videoCode: String) {
    let url = URL(string: "https://www.youtube.com/embed/\(videoCode)")
    myWKWebView.load(URLRequest(url: url!))
}

Для аргумента videoCode в функции getVideo вы должны использовать videoID, я сделаю его объемным по приведенной ниже ссылке: https://www.youtube.com/watch?v= gI3pz7eFgfo & t = 838s