swift 在iOS应用中播放Youtube视频

nkcskrwz  于 2023-05-16  发布在  Swift
关注(0)|答案(5)|浏览(219)

我想在我的iOS应用程序中播放YouTube视频。我搜索了一下,但我找到的唯一解决方案是将YouTube视频嵌入iOS应用程序中,其中视频在Webview中播放,因此,我们可以滚动并播放建议中的其他视频。我不想在webview中播放视频,我想播放视频就像它在播放器中播放,用户无法滚动它。Swift中有没有解决方案,我也不想使用违反Youtube条款的库

czq61nw1

czq61nw11#

如果您不想使用YouTube提供的API,而是继续使用UIWebView,则可以使用另一种解决方案。
YouTube具有在网页视图中全屏加载任何视频的功能,而无需使用格式为https://www.youtube.com/embed/<videoId>的URL的任何滚动功能。
例如,要使用此方法加载Gangnam Style,只需将UIWebView指向URL https://www.youtube.com/embed/9bZkp7q19f0

fwzugrvs

fwzugrvs2#

YouTube提供的用于在iOS应用程序中嵌入视频的API确实是用Objective-C编写的,但它在Swift中也能很好地工作。
要通过CocoaPods安装库,follow the CocoaPods setup instructions并将以下行添加到您的Podfile:

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

运行pod install后,请确保从现在开始在Xcode中使用.xcworkspace文件。
要导入pod,只需在Swift文件的顶部使用以下import语句:

import youtube_ios_player_helper

然后,您可以创建YouTube播放器视图,如下所示:

let playerView = YTPlayerView()

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

playerView.load(withVideoId: videoId);

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

hsgswve4

hsgswve43#

也有在Github上的应用程序中播放Youtube视频的解决方案。
就像这个:https://github.com/rinov/YoutubeKit
或者这个:https://github.com/gilesvangruisen/Swift-YouTube-Player
只需简单地为您想要使用的项目添加pod,在终端中安装pod,您就可以使用该项目中的功能。
希望这是有帮助的。

wswtfjt7

wswtfjt74#

在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)
                }
        }
}
50few1ms

50few1ms5#

我已经创建了一个扩展来制作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
*/

相关问题