J'essaie de créer un lecteur vidéo pour mon application Swift, mais l'erreur d'erreur persiste: "identificateur non résolu AVPlayerViewController". Qu'est-ce que je rate?
Je suis un débutant dans ce domaine, il se peut que je doive demander plusieurs milliers de fois en termes simples. Cela fait peut-être un jour que je fouille sur Internet pour une vidéo expliquant comment intégrer une vidéo Youtube dans mon application, sans résultat. Si vous pouviez me diriger vers un tutoriel, ce serait génial!
Merci!
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) )
}
}
Utilisez YouTube-Player-iOS-Helper :
Étape 1: ajoutez pod 'youtube-ios-player-helper', '0.1.4'
à votre Podfile et exécutez pod install
.
Étape 2: Implémentez ce 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)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
Remarque: Définissez la clé rel
sur 0
dans votre dictionnaire playerVars
si vous ne souhaitez pas afficher la vidéo associée:
let playerVars = ["playsinline":1, "rel" : 0 ]
Swift 3/4
Vous pouvez lire une vidéo youtube dans AVPlayer à l'aide de XCDYouTubeKit.
Ajouter
pod 'XCDYouTubeKit'
dans votre projet et écrivez un code comme ci-dessous
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)
}
}
}
vous pouvez modifier la qualité de la vidéo en remplaçant XCDYouTubeVideoQuality. HD720 . rawValue par medium360 ou par Small240
Je l'ai fait en utilisant le code ci-dessous sur la version de Swift 4+
guard let url = URL(string: "<Your YuTube url>")
else{
return
}
let safariViewControllerObject = SFSafariViewController(url: url)
self.present(safariViewControllerObject, animated: true, completion: nil)
Remarque: - J'ai importé SafariServices lib
Swift 4 pour iOS12, vous devez importer le module "WebKit"
Faire un point de vente pour WKWebView. Utilisez la fonction suivante, que vous devriez appeler dans viewDidLoad ():
func getVideo(videoCode: String) {
let url = URL(string: "https://www.youtube.com/embed/\(videoCode)")
myWKWebView.load(URLRequest(url: url!))
}
Pour un argument videoCode dans la fonction getVideo, vous devez utiliser le videoID. Je le placerai en bloc sur le lien d'exemple ci-dessous: https://www.youtube.com/watch?v=gI3pz7eFgfo & t = 838s
Ajouter Pod Pod 'XCDYouTubeKit'
importer XCDYouTubeKit dans 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()
}
}