通过YouTube数据API v3使用Python 3上传超过1GB的视频文件

时间:2019-07-19 18:26:49

标签: python python-3.x youtube-api youtube-data-api

我正在创建一个程序,以在每个工作日自动将几个视频的上载到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')

该代码将上传短视频,但不会上传长视频。

0 个答案:

没有答案