web-dev-qa-db-ja.com

Youtubeビデオをアプリに埋め込む方法は?

Swiftアプリ用のビデオプレーヤーを作成しようとしていますが、 'unresolved identifier AVPlayerViewController'というエラーが表示されます。何が欠けていますか?

私はこれに初心者です、素人の言葉で数千回尋ねなければならないかもしれません。 YouTubeの動画をアプリに埋め込む方法を紹介する動画を探して、たぶん1日ほどインターネットを探していましたが、結果はありませんでした。素晴らしいチュートリアルを教えていただければ幸いです!

ありがとう!

14
Dandelyons

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) )
    }
}
36
Leo Dabus

YouTube-Player-iOS-Helper を使用します:

ステップ1pod '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()
    }
}

注:rel辞書でplayerVarsキーを0に設定する場合関連するビデオを表示したい:

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

7
javimuu

Swift 3/4

XCDYouTubeKitを使用して、AVPlayerでyoutubeビデオを再生できます。

追加

ポッド「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を置き換えることにより、ビデオの品質を変更できます。HD72。rawValueをmedium36またはSmall24

4
Chetan

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をインポートしました

1
Prasanna

IOS12用のSwift 4では、「WebKit」モジュールをインポートする必要があります

WKWebViewのアウトレットを作成します。 viewDidLoad()で呼び出す必要がある次の関数を使用します。

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

関数getVideoの引数videoCodeには、videoIDを使用する必要があります。以下のリンク例で一括します。 https://www.youtube.com/watch?v=gI3pz7eFgfo&t = 838s

0
Ivan Obodovskiy

YouTubeビデオをSwift 4.1で再生します

ポッドポッド「XCDYouTubeKit」を追加

viewControllerにXCDYouTubeKitをインポートする

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