Я делал аплоад видео через гугл фреймворки
pod 'GoogleAPIClientForREST'
pod 'GoogleAPIClientForREST/YouTube'
pod 'Google/SignIn'
Сделай по аналогии только получение видео.
в Бриджинг файле ОБЯЗАТЕЛЬНО прописать
#import <Google/SignIn.h>
#import <GTMSessionFetcher/GTMSessionFetcher.h>
#import <GTMSessionFetcher/GTMSessionFetcherService.h>
Разбивай и помещай код там где надо тебе
let service = GTLRYouTubeService()
.....
var configureError: NSError?
GGLContext.sharedInstance().configureWithError(&configureError)
assert(configureError == nil, "Error configuring Google services: \(configureError)")
GIDSignIn.sharedInstance().delegate = self
GIDSignIn.sharedInstance().uiDelegate = self
GIDSignIn.sharedInstance().scopes = [kGTLRAuthScopeYouTube, kGTLRAuthScopeYouTubeUpload]
GIDSignIn.sharedInstance().shouldFetchBasicProfile = true
GIDSignIn.sharedInstance().signIn()
service.authorizer = GIDSignIn.sharedInstance().currentUser.authentication.fetcherAuthorizer()
let status = GTLRYouTube_VideoStatus()
status.privacyStatus = kGTLRYouTube_VideoStatus_PrivacyStatus_Public
let snippet = GTLRYouTube_VideoSnippet()
snippet.title = "Lalala"
snippet.descriptionProperty = "TestUpload"
snippet.tags = "test,video,upload".components(separatedBy: ",")
let youtubeVideo = GTLRYouTube_Video()
youtubeVideo.snippet = snippet
youtubeVideo.status = status
let uploadParams = GTLRUploadParameters(fileURL: url, mimeType: "video/mp4")
let uploadQuery = GTLRYouTubeQuery_VideosInsert.query(withObject: youtubeVideo, part: "snippet,status", uploadParameters: uploadParams)
uploadQuery.executionParameters.uploadProgressBlock = {(progressTicket, totalBytesUploaded, totalBytesExpectedToUpload) in
print("Uploaded", totalBytesUploaded)
}
service.executeQuery(uploadQuery) { (ticket, obj, error) in
print(ticket)
print(obj)
print(error)
}