我正在创建一个程序,以在每个工作日自动将几个视频的上载到YouTube 。我正在使用 Python 3 编写该程序,并且正在使用 YouTube Data API v3 来完成大部分工作。
该程序适用于短视频,但不适用于长视频,我需要帮助使我的代码上传大型视频(接近2GB)
我白天上传两种视频,mp4的时长为3分钟,mp4的时长为50分钟(文件大小约为2GB)。 3分钟的视频可以正常上传,但 50分钟的视频不会上传。我不确定为什么会这样,我不知道这是因为我在上传过程完成之前(通常是在等待一个多小时之后)终止了上传过程,或者是因为代码被破坏了并且一开始就不会完成。无论如何,我需要程序在合理的时间内(约20分钟)上载这些大文件。通过ISP,我的上传速度约为5-10MB / s。
我已经阅读了很多Youtube和Google提供的API文档,并没有取得令人满意的结果,实际上,我相信Youtube提供的用于在Python中实现可恢复上传的代码实际上是被破坏了!编写该文件的开发人员从未在一定大小的文件上进行过测试!
这是一个可复制的示例,要求您使用oAuth2身份验证过程将api调用链接到您的youtube帐户。
youtube = googleapiclient.discovery.build(
api_service_name, api_version, credentials=creds)
upload = youtube.videos().insert( # Build Upload Call
part="snippet,status",
body={
"snippet": {
"categoryId": "27",
"description": descName,
"title": titleName,
"tags": tags
},
"status": {
"privacyStatus": "public"
}
},
media_body=MediaFileUpload(
y, chunksize=1024*1024, resumable=True)
)
while upload is None:
upload = upload.next_chunk()
if "id" in upload:
print('video uploaded')
else:
exit('a failure has occured:', upload)
videoId = json.loads(json.dumps(upload.execute())).get(
'id')
该代码将上传短视频,但不会上传长视频。