如何在iOS Swift中播放Vimeo视频?

时间:2016-11-23 15:34:47

标签: ios swift vimeo

我创建了一个使用Vimeo播放视频的iOS应用。我想知道在iOS Swift中显示Vimeo视频的最佳方法是什么。

我已经修复了,当点击图像时,占位符图像将被隐藏,但视频不会直接播放。除此之外,所有Vimeo界面元素都是可见的。我知道你应该给Vimeo提供信用,所以不用说我在视频的底部显示了一个Vimeo标志。是否有可能隐藏网络播放器的所有Vimeo元素?

我可以找到更多信息的来源很不错。 如果还有任何问题,请告诉我! 提前谢谢。

5 个答案:

答案 0 :(得分:5)

我能够找到的最好方法是使用UIWebView

步骤:
(1)在View Controller中添加所需大小的UIWebView (2)从原始vimeo.com URL获取视频嵌入代码 (3)最后,您可以使用以下代码示例嵌入视频:

let embedHTML="<html><head><style type=\"text/css\">body {background-color: transparent;color: black;}</style><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=yes\"/></head><body style=\"margin:0\"><div><iframe src=\"//player.vimeo.com/video/139785390?autoplay=1&amp;title=1&amp;byline=1&amp;portrait=0\" width=\"640\" height=\"360\" frameborder=\"0\" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe></div></body></html>"
let url: NSURL = NSURL(string: "https://")!
webView.loadHTMLString(embedHTML as String, baseURL:url )
webView.contentMode = UIViewContentMode.ScaleAspectFit

答案 1 :(得分:3)

您可以使用此Swift库HCVimeoVideoExtractor提取mp4视频网址,然后使用AVPlayer播放它。只需传递Vim​​eo视频链接或视频ID。

let url = URL(string: "https://vimeo.com/254597739")!
HCVimeoVideoExtractor.fetchVideoURLFrom(url: url, completion: { ( video:HCVimeoVideo?, error:Error?) -> Void in                
    if let err = error {                    
       print("Error = \(err.localizedDescription)")                    
       return
    }

    guard let vid = video else {
        print("Invalid video object")
        return
    }

    print("Title = \(vid.title), url = \(vid.videoURL), thumbnail = \(vid.thumbnailURL)")

    if let videoURL = vid.videoURL[.Quality540p] {
        let player = AVPlayer(url: videoURL)
        let playerController = AVPlayerViewController()
        playerController.player = player
        self.present(playerController, animated: true) {
            player.play()
        }
    }                            
})

答案 2 :(得分:2)

我设法实现此目的的方法是使用AVKitAVFoundation

let url: URL! = URL(string: "https://01-lvl3-pdl.vimeocdn.com/01/3355/3/91775232/243724947.mp4?expires=1498547278&token=073f7b03877a8ed3c8029")
let player: AVPlayer = AVPlayer(url: url)
let controller: AVPlayerViewController = AVPlayerViewController()

controller.view.translatesAutoresizingMaskIntoConstraints = false
controller.player = player

// Add `controller` to your view somehow

player.play()

诀窍是你无法使用它显示网站的链接(在我的情况下是https://vimeo.com/91775232)。

我必须检查来源并找到视频的实际网址(即:https://01-lvl3-pdl.vimeocdn.com/01/3355/3/91775232/243724947.mp4?expires=1498547278&token=073f7b03877a8ed3c8029)。

一旦我使用它,一切正常。

答案 3 :(得分:0)

对于 Swift 4 ,我在情节提要中使用了 WKWebView 并实现了以下代码:

import WebKit

@IBOutlet弱变量webKitView:WKWebView!

要在WebView中播放视频,

if yourVimeoLink.lowercased().contains("vimeo.com") {
            let url: NSURL = NSURL(string: yourVimeoLink)
            webKitView.contentMode = UIViewContentMode.scaleAspectFit
            webKitView.load(URLRequest(url: url as URL))

}

希望会有所帮助! :)

答案 4 :(得分:-3)

import AVFoundation
import AVKit

let videoURL = "https://vimeo.com/blablabla/whatevertheURLis"

func playExternalVideo() {
    let videoURL = NSURL(string: self.videoURL)
    let player = AVPlayer(url: videoURL as! URL)
    let playerViewController = AVPlayerView()

    playerViewController.player = player
}

确保添加AVKit播放器视图并为其提供一类AVPlayerView。至于Vimeo的交易,它应该没有Vimeo的UI控件。如需更多帮助,请观看此视频。 https://www.youtube.com/watch?v=fhD7hXrpExE