如何在Python脚本中借助youtube-upload上传MoviePy生成的视频?
在Windows上用Python 3结合MoviePy和youtube-upload上传视频到YouTube的实现方法
我来帮你梳理一下完整的实现流程,亲测在Windows环境下可行:
一、先搞定环境依赖
首先得把需要的库和工具都装齐:
- 打开命令提示符(CMD)或者PowerShell,安装Python库:
pip install moviepy youtube-upload - 别忘了ffmpeg:MoviePy和youtube-upload都依赖它处理视频。你可以下载Windows版本的ffmpeg,解压后把
ffmpeg.exe所在的文件夹路径添加到系统的PATH环境变量里,这样Python才能找到它。
二、配置YouTube API授权(关键步骤!)
youtube-upload需要通过YouTube Data API上传视频,所以得先搞定OAuth2认证:
- 登录Google Cloud Console,创建一个新项目,然后在项目里启用YouTube Data API v3。
- 进入「API和服务」→「凭据」,创建一个「OAuth客户端ID」,应用类型选「桌面应用」。
- 下载生成的
credentials.json文件,把它放到你的Python脚本所在的文件夹里。 - 第一次运行上传脚本时,会自动弹出浏览器让你登录你的YouTube账号,授权这个应用访问你的上传权限,授权后会生成一个
token.json文件,之后再运行就不用重复授权了。
三、整合MoviePy生成视频和上传的代码
这里给你一个完整的示例,先生成视频再上传:
from moviepy.editor import TextClip, CompositeVideoClip from youtube_upload import upload_video # 用MoviePy生成视频的函数(你可以替换成自己的生成逻辑) def create_test_video(): # 生成一个简单的文本视频,时长5秒,720P分辨率 text_clip = TextClip("自动生成的YouTube视频", fontsize=60, color="#ffffff", font="Arial") final_video = CompositeVideoClip( [text_clip.set_duration(5)], size=(1280, 720), bg_color="#000000" ) # 保存视频到本地 output_path = "my_generated_video.mp4" final_video.write_videofile(output_path, fps=24, codec="libx264") return output_path if __name__ == "__main__": # 第一步:生成视频 video_file = create_test_video() print(f"视频已生成:{video_file}") # 第二步:上传到YouTube try: # 这里可以自定义视频的各种属性 video_id = upload_video( video_file, title="我的Python自动生成视频", description="这是用MoviePy生成,通过youtube-upload上传到YouTube的测试视频", tags=["Python", "MoviePy", "YouTube自动化"], privacy_status="unlisted" # 可选值:public(公开)、private(私有)、unlisted(不公开可分享) ) print(f"上传成功!视频ID:{video_id}") except Exception as error: print(f"上传出错了:{str(error)}")
四、一些需要注意的小细节
- 如果你自己的MoviePy生成逻辑比较复杂,比如涉及到音频、多个剪辑拼接,只需要把生成后的视频路径传给
upload_video函数就行,不用改上传部分的代码。 - 如果遇到API配额不足的问题,去Google Cloud Console的「API和服务」→「配额」里查看YouTube Data API的使用情况,一般免费额度足够日常测试用。
- 要是上传时出现网络超时,检查你的网络连接,或者尝试给
upload_video函数添加timeout参数(比如timeout=300,单位秒)。
内容的提问来源于stack exchange,提问作者user2975192




