提问者:小点点

AVFoundation加载Google Drive视频


有人成功地使用AVFoundation、AVPlayer播放了Google驱动器视频吗?

Objective-c或swift、ios或osx对我来说很好。

我所尝试过的?

我试过了:

>

  • iOS从谷歌驱动器斯威夫特流视频。在这里,如果它试图从url提取链接,我得到了拒绝访问(视频是公开的)。

    从谷歌驱动器中提取链接并使用该链接,例如。视频链接,但当我在应用程序中使用它时,没有加载任何内容。

    尝试这样的东西后,寻找到其他解决方案的web和东西,没有运气

    视频链接

    提前感谢!


  • 共1个答案

    匿名用户

    GDrive不支持视频的流式传输,但支持下载简历。

    您将需要使用自定义的AVAssetResourceLoader有一个有效的视频URL。

    class GDriveLoader: NSObject, AVAssetResourceLoaderDelegate {
        public func resourceLoader(_ resourceLoader: AVAssetResourceLoader, shouldWaitForLoadingOfRequestedResource loadingRequest: AVAssetResourceLoadingRequest) -> Bool {
            //Here you will put your code to download the bytes requested by AVPlayer. 
            //You can find this info in the loadingRequest.dataRequest.
        }
    }
    

    在这个示例项目中,目标c中有3个自定义AVAssetResourceLoader会的实现。

    基本上,一旦您下载了url si以将其模式替换为自定义模式,您将不得不做什么。类似于gDrive://而不是https://

    当您使用此url创建AVURLAsset时,您可以访问新创建的对象的属性resourceLoader并调用传递您的GDriveLoader的方法set会代表。

    使用自定义模式,AVFoundation不知道如何获取视频数据,并且会向资产的资源加载器询问该怎么做。方法resourceLoader(_resourceLoader: AVAssetResourceLoader,应该为AVPlayer当前读取的每个数据块查询多次。