Как вставить видео 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