Ich versuche, einen Video-Player für meine Swift-App zu erstellen, erhalte aber weiterhin den Fehler "Nicht aufgelöster Bezeichner AVPlayerViewController". Was vermisse ich?
Ich bin ein Anfänger in diesem Bereich, ich muss vielleicht ein paar tausend Mal im Sinne von Laien fragen. Ich habe jetzt vielleicht einen Tag lang im Internet nach einem Video gesucht, um zu sehen, wie man ein Youtube-Video in meine App einbettet, und zwar ohne Ergebnis. Wenn Sie mich auf ein Tutorial verweisen könnten, wäre das großartig!
Vielen Dank!
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) )
}
}
Verwenden Sie YouTube-Player-iOS-Helper :
Schritt 1: Fügen Sie pod 'youtube-ios-player-helper', '0.1.4'
zu Ihrem Podfile hinzu und führen Sie pod install
aus.
Schritt 2: Implementiere diesen 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()
}
}
Hinweis: Setzen Sie den Schlüssel rel
in Ihrem playerVars
-Wörterbuch auf 0
, wenn Sie kein zugehöriges Video anzeigen möchten:
let playerVars = ["playsinline":1, "rel" : 0 ]
Swift 3/4
Sie können Youtube-Videos im AVPlayer mit Hilfe von XCDYouTubeKit abspielen.
Hinzufügen
pod 'XCDYouTubeKit'
in Ihr Projekt und schreiben Sie einen Code wie folgt
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)
}
}
}
sie können die Videoqualität ändern, indem Sie XCDYouTubeVideoQuality. HD720 . rawValue durch medium360 oder durch Small240 ersetzen.
Ich habe es mit dem folgenden Code in der Swift 4+ Version gemacht
guard let url = URL(string: "<Your YuTube url>")
else{
return
}
let safariViewControllerObject = SFSafariViewController(url: url)
self.present(safariViewControllerObject, animated: true, completion: nil)
Hinweis: - Ich habe SafariServices lib importiert
Swift 4 für iOS12 sollten Sie das "WebKit" -Modul importieren
Machen Sie einen Auslass für WKWebView. Verwenden Sie folgende Funktion, die Sie in viewDidLoad () aufrufen sollten:
func getVideo(videoCode: String) {
let url = URL(string: "https://www.youtube.com/embed/\(videoCode)")
myWKWebView.load(URLRequest(url: url!))
}
Für ein Argument videoCode in der Funktion getVideo sollten Sie die videoID verwenden. Ich mache es auf den folgenden Beispiellink: https://www.youtube.com/watch?v=gI3pz7eFgfo & t = 838s
Pod-Pod 'XCDYouTubeKit' hinzufügen
importieren Sie 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()
}
}