2016-11-23 111 views
4

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

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

我可以找到更多信息的来源会很好。 如果还有任何问题,请告诉我! 在此先感谢。

+0

您是否考虑过或将使用[SDK来播放Vimeo视频](https://github.com/vimeo/VIMNetworking)?或者你只是使用API​​来获取电影数据? –

回答

-1
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

+0

这些是使用AVPlayer播放视频文件的一般说明。这不适用于网络流Vimeo视频。 –

+0

我几乎肯定苹果会照顾流媒体,但如果我错了,通过一切手段纠正我。 @Nitin – ThatGuy

+0

是Apple的AV播放器库可以流式传输内容。但如果我记得正确的Vimeo提出了额外的限制。您是否专门尝试使用此方法播放Vimeo视频? –

5

我一直能弄清楚的最好方法是使用UIWebView

步骤:
(1)添加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

,我已经成功地实现这个使用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)。

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

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

0

您可以使用此Swift库HCVimeoVideoExtractor来提取mp4视频URL,然后使用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() 
     } 
    }        
})