在 iOS 应用程序中播放 Youtube 视频

问题描述 投票:0回答:5

我想在我的 iOS 应用程序中播放 youtube 视频。我搜索了那个,但我找到的唯一解决方案是在 iOS 应用程序中嵌入 youtube 视频,视频在 webview 中播放,这样我们就可以滚动并播放建议的其他视频。 我不想在 webview 中播放视频,我想像在播放器中播放一样播放视频,用户无法滚动它。 在 Swift 中是否有任何解决方案,而且我不想使用违反 Youtube

条款和条件的库
ios swift swift3
5个回答
25
投票

如果您不想使用 YouTube 提供的 API,而是继续使用

UIWebView
.

,这是另一个解决方案

YouTube 具有使用

https://www.youtube.com/embed/<videoId>
.

格式的 URL 在 web 视图中全屏加载任何视频的功能,而无需任何滚动功能

例如,要使用此方法加载 Gangnam Style,只需将 UIWebView 指向 URL https://www.youtube.com/embed/9bZkp7q19f0.


20
投票

YouTube 提供的用于在 iOS 应用程序中嵌入视频的 API 确实是用 Objective-C 编写的,但它在 Swift 中也能正常工作。

要通过 CocoaPods 安装库,按照 CocoaPods 安装说明 并将以下行添加到您的 Podfile:

pod ‘youtube-ios-player-helper’, ‘~> 0.1’

一旦你运行了

pod install
,一定要从现在开始在Xcode中使用
.xcworkspace
文件。

要导入 pod,只需在 Swift 文件的顶部使用以下导入语句:

import youtube_ios_player_helper

然后您可以按如下方式创建 youtube 播放器视图:

let playerView = YTPlayerView()

您可以像对待任何其他 UIView 一样将此视图包含在您的布局中。此外,它还包括 YouTube 文档中列出的所有功能。例如,要加载和播放视频,请使用以下函数:

playerView.load(withVideoId: videoId);

其中

videoId
是在视频的URL中找到的字符串id,比如
"9bZkp7q19f0"
.


3
投票

Github 上也有在应用程序中播放 Youtube 视频的解决方案。

喜欢这个:https://github.com/rinov/YoutubeKit

或者这个:https://github.com/gilesvangruisen/Swift-YouTube-Player

只需为您要使用的项目添加 pod,在终端中安装 pod,您就可以使用该项目中的功能。

希望对您有所帮助。


2
投票

在 Swift 4.0 中播放 youtube 视频

if let range = strUrl.range(of: "=") {
        let strIdentifier = strUrl.substring(from: range.upperBound)        
        let playerViewController = AVPlayerViewController()
        self.present(playerViewController, animated: true, completion: nil)
        XCDYouTubeClient.default().getVideoWithIdentifier(strIdentifier) { 

            [weak playerViewController] (video: XCDYouTubeVideo?, error: Error?) in
            if let streamURLs = video?.streamURLs, let streamURL = 
                (streamURLs[XCDYouTubeVideoQualityHTTPLiveStreaming] ?? 
                streamURLs[YouTubeVideoQuality.hd720] ?? 
                streamURLs[YouTubeVideoQuality.medium360] ?? 
                streamURLs[YouTubeVideoQuality.small240]) {
                    playerViewController?.player = AVPlayer(url: streamURL)
                } else {
                    self.dismiss(animated: true, completion: nil)
                }
        }
}

0
投票

我已经创建了一个扩展程序来制作

UIWebView
中的 Youtube 视频。通过使用Adam的解决方案。

extension String { 
/*
 Below variable will convert youtube ID to embedded Youtube link. 
*/
    var youtubeVideoURL: String?{
        let url = "https://www.youtube.com/embed/\(self)"
        return url
    }


/*    
Here below variable return us Youtube ID from URL String.

e.g. if Youtube link = "https://youtu.be/-zD8M66aAA4" then we'll get YoutubeID = "-zD8M66aAA4"
*/
    var youtubeID: String? { 
        let pattern = "((?<=(v|V)/)|(?<=be/)|(?<=(\\?|\\&)v=)|(?<=embed/)|(?<=shorts/))([\\w-]++)"
        
        let regex = try? NSRegularExpression(pattern: pattern, options: .caseInsensitive)
        let range = NSRange(location: 0, length: count)

        guard let result = regex?.firstMatch(in: self, range: range) else {
            return nil
        }
        
        return (self as NSString).substring(with: result.range)
    }
}
  • 使用
let ytLink = "https://youtu.be/-zD8M66aAA4"

let videoUrl = ytLink.youtubeID?.youtubeVideoURL
print(videoUrl)


/*
Result:- https://www.youtube.com/embed/-zD8M66aAA4
*/
© www.soinside.com 2019 - 2024. All rights reserved.