我想在iOS应用中播放YouTube视频。我搜索了这个,但我找到的唯一解决方案是在iOS应用中嵌入youtube视频,其中视频在webview中播放,因此,我们可以滚动并播放其他建议的视频。 我不想在webview中播放视频,我想播放视频就像它在播放器中播放一样,用户无法滚动它。 在Swift中是否有任何解决方案,我也不想使用违反Youtube条款和条件的库
答案 0 :(得分:12)
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
是在视频网址中找到的字符串ID,例如"9bZkp7q19f0"
。
答案 1 :(得分:12)
如果您不想使用YouTube提供的API而是继续使用UIWebView
,那么这是另一种解决方案。
YouTube可以使用https://www.youtube.com/embed/<videoId>
格式的网址在网页浏览中全屏加载任何视频而无需使用任何滚动功能。
例如,要使用此方法加载Gangnam Style,只需将UIWebView定向到URL https://www.youtube.com/embed/9bZkp7q19f0。
答案 2 :(得分:0)
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)
}
}
}
答案 3 :(得分:0)
还有一些在Github上的应用程序中播放Youtube视频的解决方案。
喜欢这个:https://github.com/rinov/YoutubeKit
或者这个:https://github.com/gilesvangruisen/Swift-YouTube-Player
只需为要使用的项目添加容器,然后将其安装在终端中,就可以在该项目中使用该功能。
希望这会有所帮助。