2016-11-23 112 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() 
     } 
    }        
})