【发布时间】:2021-04-26 05:55:58
【问题描述】:
在尝试将大型视频文件上传到 YouTube 时获取 MemoryError。上传较小的文件时可以,但是当文件较大时,我会得到MemoryError。我猜这是因为代码试图将视频文件加载到 RAM。有什么方法可以上传视频而不将其加载到 RAM 中。
import os
from googleapiclient.http import MediaFileUpload
import google_auth_oauthlib.flow
import googleapiclient.discovery
import googleapiclient.errors
scopes = ["https://www.googleapis.com/auth/youtube.upload"]
def main():
os.environ["OAUTHLIB_INSECURE_TRANSPORT"] = "0"
client_secret_file = 'client_credentials.json'
api_name = 'youtube'
api_version = 'v3'
flow = google_auth_oauthlib.flow.InstalledAppFlow.from_client_secrets_file(client_secret_file, scopes)
credentials = flow.run_console()
youtube = googleapiclient.discovery.build(api_name, api_version, credentials=credentials)
request = youtube.videos().insert(
part='snippet,status',
body={
'snippet': {
'categoryId': "20",
'title': 'test title',
'tags': ['tag1', 'tag2']
},
'status': {
'privacyStatus': 'private'
}
},
media_body=MediaFileUpload(File Path)
)
response = request.execute()
print(response)
if __name__ == '__main__':
main()
【问题讨论】:
-
这是我在 stackoverflow 中的第一个问题。谢谢你的回答。我已经从官方 YouTube 脚本中复制了代码,但做了一点改动,当然我不知道如何使用“已解析”、“参数”。它实际上解决了内存错误问题。