Ios 使用Alamofire下载视频,然后在AV播放器上播放
我使用以下代码从URL下载视频。它可以很好地将其下载到视频中Ios 使用Alamofire下载视频,然后在AV播放器上播放,ios,swift3,alamofire,avplayer,nsdata,Ios,Swift3,Alamofire,Avplayer,Nsdata,我使用以下代码从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(pr
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()
}
}
但我想用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()
}
}
}
您可以使用下面这段代码来转换
按照要求,,
下面是完整实现的源代码
附言:这是一个演示的想法。你们中的许多人会争辩说,这段代码可以优化,可以做得更好,但确实如此
是一个演示,您可以根据需要选择部分或全部
你的要求
经过几个小时的搜寻 我想出了一个简单可靠的方法来转换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()
}
}
}
您可以使用下面这段代码来转换
按照要求,,
下面是完整实现的源代码
附言:这是一个演示的想法。你们中的许多人会争辩说,这段代码可以优化,可以做得更好,但确实如此
是一个演示,您可以根据需要选择部分或全部
你的要求
设obj=Stringdata:data,编码:.utf8;让player=avplayerrl:URLstring:obj!!那没有道理。obj应该是视频字节的内容,如何将其转换为字符串?这怎么会是一个URL?@Larme我知道我走错了路。请建议一些更好的路径你真的需要加载它吗?为什么不直接执行let player=avplayerrl:URLstring:https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4!? 否则,您需要将数据保存到应用程序文件管理器或类似文件路径中,并将该路径用于AVPlayerurl:URLstring:myFilePath@Larme为了将来的参考,我需要下载视频并将其存储到我的本地目录中。是否有其他方法可以做到这一点,然后在AVPlayer中播放它。Thankslet obj=Stringdata:数据,编码:.utf8;让player=avplayerrl:URLstring:obj!!那没有道理。obj应该是视频字节的内容,如何将其转换为字符串?这怎么会是一个URL?@Larme我知道我走错了路。请建议一些更好的路径你真的需要加载它吗?为什么不直接执行let player=avplayerrl:URLstring:https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4!? 否则,您需要将数据保存到应用程序文件管理器或类似文件路径中,并将该路径用于AVPlayerurl:URLstring:myFilePath@Larme为了将来的参考,我需要下载视频并将其存储到我的本地目录中。是否有其他方法可以做到这一点,然后在AVPlayer中播放它。感谢您的代码在tableview中帮助了我很多,我可以显示视频,但在单个页面中我无法显示。是否有其他下载选项&play@UmaMadhavi此代码仅适用于单一视图。你能分享你的代码片段吗,比如你是如何使用它的,这样我就可以看到你的问题了。我已使用此当前代码下载了Solo视频,然后在View Controller的全屏AV播放器中播放。为什么使用appendingPathComponent?@Lakshay访问我的名为Video.mp4的文件。澄清你的疑问。首先只打印printdocumentsURL,然后打印视频URL。看到这个变化,你的疑问将有望得到澄清。@AbhirajsinhThakore你能提供完整的来源吗?我正在开发一个流媒体应用程序,希望检查这是否适用于我的情况。谢谢您的代码在tableview中帮助了我很多,我可以显示视频,但在单个页面中我无法显示。是否有其他下载选项&play@UmaMadhavi此代码仅适用于单一视图。你能分享你的代码片段吗,比如你是如何使用它的,这样我就可以看到你的问题了。我已使用此当前代码下载了Solo视频,然后在View Controller的全屏AV播放器中播放。为什么使用appendingPathComponent?@Lakshay访问我的名为Video.mp4的文件。澄清你的疑问。首先只打印printdocumentsURL,然后打印视频URL。看到这个变化,你的疑问将有望得到澄清。@AbhirajsinhThakore你能提供完整的来源吗?我正在开发一个流媒体应用程序,希望检查这是否适用于我的情况。谢谢