我创建了一个使用Vimeo播放视频的iOS应用。我想知道在iOS Swift中显示Vimeo视频的最佳方法是什么。
我已经修复了,当点击图像时,占位符图像将被隐藏,但视频不会直接播放。除此之外,所有Vimeo界面元素都是可见的。我知道你应该给Vimeo提供信用,所以不用说我在视频的底部显示了一个Vimeo标志。是否有可能隐藏网络播放器的所有Vimeo元素?
我可以找到更多信息的来源很不错。 如果还有任何问题,请告诉我! 提前谢谢。
答案 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&title=1&byline=1&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播放它。只需传递Vimeo视频链接或视频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)
我设法实现此目的的方法是使用AVKit
和AVFoundation
:
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