【问题标题】:To play Youtube Video in iOS app在 iOS 应用中播放 Youtube 视频
【发布时间】:2017-06-12 12:20:53
【问题描述】:

我想在我的 iOS 应用中播放 youtube 视频。我搜索了它,但我发现的唯一解决方案是将 youtube 视频嵌入 iOS 应用程序中,其中视频在 webview 中播放,因此,我们可以滚动并播放其他建议的视频。 我不想在 webview 中播放视频,我想像在播放器中播放视频一样播放视频,并且用户无法滚动它。 在 Swift 中是否有任何解决方案,而且我不想使用违反 Youtube 条款和条件的库

【问题讨论】:

标签: ios swift swift3


【解决方案1】:

如果您不想使用 YouTube 提供的 API 而是继续使用 UIWebView,这是另一种解决方案。

YouTube 具有使用https://www.youtube.com/embed/<videoId> 格式的 URL 以全屏方式在 web 视图中加载任何视频的功能,而无需任何滚动功能。

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

【讨论】:

  • 我尝试了你的第二个答案,但是那个导入语句给了我错误“没有找到这样的模块”我做了 cocoapods 的每一步。
  • 确实,他们的文档似乎已经过时了。对我有用的 pod 名称是 youtube-ios-player-helper 而不是 YouTube-Player-iOS-Helper。如果您仍然感兴趣,我刚刚使用对我有用的步骤更新了我的其他答案。
【解决方案2】:

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 youtube_ios_player_helper

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

let playerView = YTPlayerView()

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

playerView.load(withVideoId: videoId);

其中videoId是视频网址中的字符串id,如"9bZkp7q19f0"

【讨论】:

  • 视频不可用,我在使用这个库时遇到了这个错误。
  • 问题是您无法以正常质量播放视频(总是中等,即 360p)
  • 而这个官方的helper就是UIWebView + YouTube iframe API,所以你可以找到很多其他非官方的库(甚至是Swift + WKWebView)
【解决方案3】:

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

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

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

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

希望这会有所帮助。

【讨论】:

  • 内联添加示例代码会改善您的答案
【解决方案4】:

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

【讨论】:

    猜你喜欢
    • 2017-01-30
    • 2013-02-09
    • 2013-11-20
    • 1970-01-01
    • 1970-01-01
    • 2020-08-05
    • 2014-05-01
    • 2012-07-18
    • 2012-10-17
    相关资源
    最近更新 更多