我目前正在尝试通过Swift中的网址在iOS上播放视频。带有结尾的网址,例如" .mp4"或" .m4v"工作,但当我尝试从Dropbox播放共享视频链接时,它没有。 我已经将Dropbox链接的结尾更改为" dl = 1"但无论如何都没有发生。
在网页浏览中播放Youtube视频对我来说不是一个解决方案,因为我想要原生iOS播放器。
有没有人知道如何从Dropbox播放网址,或者推荐使用云端服务?
谢谢!
答案 0 :(得分:0)
我不知道Dropbox流媒体规范。 但是如果dropbox url没有像mp4这样的播放提示, 您可以像代理服务器一样使用AVAssetLoaderDelegate。
当url具有自定义方案时,AVAssetLoaderDelegate执行。 如果使用“foo”方案,将调用'shouldWaitForLoadingOfRequestedResource'。并且您应该再次请求具有相同http标头的Dropbox。
试试这个
func play() {
let url = URL(string: "foo://bar.mp4")!
let asset = AVURLAsset(url: url)
let playerItem = AVPlayerItem(asset: asset)
asset.resourceLoader.setDelegate(self, queue: nil)
player.replaceCurrentItem(with: playerItem)
player.play()
}
func resourceLoader(_ resourceLoader: AVAssetResourceLoader, shouldWaitForLoadingOfRequestedResource loadingRequest: AVAssetResourceLoadingRequest) -> Bool {
var newRequest = URLRequest(url: URL(string: "dropbox url")!)
newRequest.allHTTPHeaderFields = loadingRequest.request.allHTTPHeaderFields
let sessionTask = URLSession.shared.dataTask(with: newRequest) { data, response, error in
if let responseData = data {
loadingRequest.dataRequest?.respond(with: responseData)
}
loadingRequest.finishLoading() // Let player know that finish loding
}
sessionTask.resume()
return true // Wait for sessionTask response.
}