Upload Video to YouTube in Swift

后端 未结 2 2006
萌比男神i
萌比男神i 2020-12-09 14:05

EDIT: Still checking this frequently, will mark as solved when I or someone else helps me figure it out!

I am trying to upload a video to YouTube with YouTube’s REST

2条回答
  •  一整个雨季
    2020-12-09 14:46

    import GoogleSignIn

    import GoogleAPIClientForREST

    private let scopes = [kGTLRAuthScopeYouTube,
                          kGTLRAuthScopeYouTubeForceSsl,
                          kGTLRAuthScopeYouTubeUpload,
                          kGTLRAuthScopeYouTubeYoutubepartner]
    
    private var service = GTLRYouTubeService()
    private let youtubeObject = GTLRYouTube_Video()
    
    func signInYoutube(){
        GIDSignIn.sharedInstance()?.presentingViewController = self
        GIDSignIn.sharedInstance()?.clientID = "Your_client_id"
        GIDSignIn.sharedInstance().delegate = self
        GIDSignIn.sharedInstance().scopes = scopes
         if GIDSignIn.sharedInstance()?.hasPreviousSignIn() ?? false {
             GIDSignIn.sharedInstance()?.restorePreviousSignIn()
         } else {
             GIDSignIn.sharedInstance()?.signIn()
         }
    }
    func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {
         if let error = error {
            self.service.authorizer = nil
           } else {
                self.service.authorizer = user.authentication.fetcherAuthorizer()
               uploadVideoOnYoutube()
           }
    }
      func uploadVideoOnYoutube() {
            guard let videoUrl = Bundle.main.url(forResource: "sample_iTunes", withExtension: "mov")else {return}
    
            //Status
            let status = GTLRYouTube_VideoStatus()
            status.privacyStatus = kGTLRYouTube_ChannelStatus_PrivacyStatus_Public
            //Snippet
            let snippet = GTLRYouTube_VideoSnippet()
            snippet.title = "YOUR_VIDEO_TITLE"
    
            //Upload parameters
            let params = GTLRUploadParameters.init(fileURL: videoUrl, mimeType: "video/mov")
    
            //YouTube Video object
            youtubeObject.status = status
            youtubeObject.snippet = snippet
    
            let query = GTLRYouTubeQuery_VideosInsert.query(withObject: youtubeObject, part: "snippet,status", uploadParameters: params)
    
            service.executeQuery(query, completionHandler: { (ticket, anyobject, error) in
                if error == nil {
                if let videoObject = anyobject as? GTLRYouTube_Video {
                    print(videoObject.identifier ?? "upload")
                }
         } else {
                    print(error?.localizedDescription)
            }
        })
    
    }
    

提交回复
热议问题