我正在尝试创建一个用Swift编写的iOS应用程序,它可以播放来自互联网的视频。它可以是来自流媒体链接或YouTube网址的视频,无论您认为哪种更容易。如果可能的话,我个人更喜欢我的作品的流媒体链接。
我的目标是能够播放用户可以浏览的互联网视频,并在用户选择时暂停并继续播放。基本的视频播放器控件。
在android中,我可以使用此流媒体视频成功从archive.org流式传输:https://archive.org/download/ksnn_compilation_master_the_internet/ksnn_compilation_master_the_internet_512kb.mp4
然而,在iOS方面,我遇到了一些问题。
以下是我尝试播放该流媒体视频的内容:
在这次尝试中,我得到一个黑屏,带有划掉的播放箭头
import UIKit
import AVKit
import AVFoundation
import MediaPlayer
class MediaVideo1: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
var url:NSURL = NSURL(string: "https://archive.org/download/ksnn_compilation_master_the_internet/ksnn_compilation_master_the_internet_512kb.mp4")!
let player = AVPlayer(URL: url)
let playerController = AVPlayerViewController()
playerController.player = player
self.addChildViewController(playerController)
self.view.addSubview(playerController.view)
playerController.view.frame = self.view.frame
player.play()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
我尝试播放YouTube视频:
在这次尝试中,我在ViewController中使用了WebView。当我运行应用程序时,我得到一个视频缩略图,但是当我点击它时,我收到错误消息"发生了错误,请稍后重试"这段代码会弹出所有时间。
import UIKit
import MediaPlayer
class MediaVideo1: UIViewController {
@IBOutlet var webView: UIWebView!
override func viewDidLoad() {
var html = "<html><body><iframe src=\"http://www.youtube.com/embed/aGDE519ygkw\" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen></iframe></body></html>"
webView.loadHTMLString(html, baseURL: nil)
webView.allowsInlineMediaPlayback = true
let embededHTML = "<html><body><iframe src=\"http://www.youtube.com/embed/aGDE519ygkw?playsinline=1\" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen></iframe></body></html>"
webView.loadHTMLString(html, baseURL: NSBundle.mainBundle().bundleURL)
}
}
我对这个方向并不十分满意,主要是因为WebView在将它放入ViewController时非常精彩。我已经做了很多关于测量和保持纵横比的工作,但它从未看起来&#34;正确&#34;。
我见过一个可以在GitHub上下载的YouTube图书馆,但它不是用swift写的,看起来很头疼。
这些问题促使我走向流媒体理念&#34;代替。
编辑: 我被告知我的帖子可能是另一个帖子的副本。但是,我仍然看到错误。
How to embed a Youtube video into my app?
我看到&#34;警卫&#34; &#34;否则{return}&#34;和&#34; wv.loadrequest&#34;行
import UIKit
class ViewController: UIViewController {
// create an outlet for your webview
@IBOutlet weak var wv: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
// load your you tube video ID
loadYoutube(videoID: "oCm_lnoVf08")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func loadYoutube(videoID videoID:String) {
// create a custom youtubeURL with the video ID
guard
let youtubeURL = NSURL(string: "https://www.youtube.com/embed/\(videoID)")
else { return }
// load your web request
wv.loadRequest( NSURLRequest(URL: youtubeURL) )
}
}
有人还使用确切的代码在线程中发布了一个dropbox文件,我遇到了同样的问题。
同样,我觉得我应该更倾向于流媒体方面而不是YouTube方面。