Abh*_*ore 0 nsdata ios avplayer alamofire swift3
我已使用以下代码从下载视频URL。下载视频效果很好。
func downloadVideo(){
Alamofire.request("https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4").downloadProgress(closure:{ (progress) in
print(progress.fractionCompleted)
self.progressView.progress = Float(progress.fractionCompleted)
}).responseData{ (response) in
print(response.result)
print(response.result.value!)
print(response.result.description)
if let data = response.result.value {
let obj = String(data: data, encoding: .utf8)
let player = AVPlayer(url: URL(string: obj!)!)
self.playerController.player = player
self.addChildViewController(self.playerController)
self.view.addSubview(self.playerController.view)
self.playerController.view.frame = self.view.frame
player.play()
}
}
Run Code Online (Sandbox Code Playgroud)
但我想在播放此视频 AVPlayer
我发现“可能是视频”下载为NSData。是正确的。?下载完成后,任何人都可以帮助我如何播放此视频吗?
如果有人可以建议一些其他代码供您使用进度条下载视频,然后在Swift 3.0中播放它,那将是很好的。
TIA。
下班后搜寻这些东西
我想出了一种简单可靠的方法来在URL中转换NSData,以便AVPlayer可以播放它
func downloadVideo(){
Alamofire.request("https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4").downloadProgress(closure : { (progress) in
print(progress.fractionCompleted)
self.progressView.progress = Float(progress.fractionCompleted)
}).responseData{ (response) in
print(response)
print(response.result.value!)
print(response.result.description)
if let data = response.result.value {
let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
let videoURL = documentsURL.appendingPathComponent("video.mp4")
do {
try data.write(to: videoURL)
} catch {
print("Something went wrong!")
}
print(videoURL)
let player = AVPlayer(url: videoURL as URL)
self.playerController.player = player
self.addChildViewController(self.playerController)
self.view.addSubview(self.playerController.view)
self.playerController.view.frame = self.view.frame
player.play()
}
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用下面的这段代码来转换它
if let data = response.result.value {
let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
let videoURL = documentsURL.appendingPathComponent("video.mp4")
do {
try data.write(to: videoURL) // Pass this videoURL to AVPlayer after Downloading Video it will be played.
} catch {
print("Something went wrong!")
}
print(videoURL)
Run Code Online (Sandbox Code Playgroud)
根据请求,这是完整实现的源代码。
PS:-这是考虑到一个演示。你们中许多人会争辩说可以优化此代码,并且可以做得更好,但是是的,这是一个演示,您可以根据自己的需求选择部分或全部