You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

能否通过YouTube Data API v3借助Google Cloud Storage视频URL上传视频?

YouTube Data API v3 外部URL直接上传视频的可行性

很遗憾,YouTube Data API v3目前并不支持像Facebook Graph API那样,通过直接指定外部文件URL(比如Google Cloud Storage的视频URL)来完成视频上传。Facebook的me/videos?file_url=MY_VIDEO_URL本质是让平台主动拉取外部存储的文件,但YouTube API没有提供类似的端点或参数实现这个逻辑。

目前YouTube API支持的上传方式主要有两种,都需要你主动将视频数据流式传输到API端点:

  • Simple Upload:适合小文件,直接一次性把视频数据发送到API;
  • Resumable Upload:推荐用于大文件,支持断点续传,需要先创建上传会话,再分块传输视频数据。

替代方案(适配你的GCS场景)

虽然没有直接的URL上传方式,但可以通过以下方式高效完成GCS视频到YouTube的上传:

  • 利用GCS与Google服务的内网传输优势:通过GCS SDK读取视频文件的字节流,直接传递给YouTube API的上传接口。因为GCS和YouTube的服务器都在Google内网,这个传输过程的速度其实非常快,不会有公网传输的额外延迟,体验上和平台主动拉取差异不大。
  • 使用官方客户端库简化流程:比如Python的google-api-python-clientgoogle-cloud-storage库可以结合使用,只需要几行代码就能实现从GCS读取流并上传到YouTube的逻辑,不需要手动处理底层的HTTP请求和流操作。

举个简单的Python代码片段示例:

from google.cloud import storage
from googleapiclient.discovery import build
from googleapiclient.http import MediaIoBaseUpload

# 初始化GCS客户端和YouTube API客户端
storage_client = storage.Client()
youtube = build('youtube', 'v3', credentials=your_credentials)

# 获取GCS中的视频文件流
bucket = storage_client.get_bucket('your-bucket-name')
blob = bucket.blob('your-video-file-path.mp4')
video_stream = blob.open('rb')

# 创建YouTube上传请求
request = youtube.videos().insert(
    part='snippet,status',
    body={
        'snippet': {'title': '你的视频标题', 'description': '视频描述'},
        'status': {'privacyStatus': 'private'}
    },
    media_body=MediaIoBaseUpload(video_stream, chunksize=-1, resumable=True)
)

# 执行上传
response = None
while response is None:
    status, response = request.next_chunk()
    if status:
        print(f"上传进度: {int(status.progress() * 100)}%")
print("上传完成!")

额外提示

如果你的应用需要频繁处理这类上传,可以通过服务账号同时授权访问GCS和YouTube API,实现全自动化的流程,不需要手动干预文件的传输环节。

内容的提问来源于stack exchange,提问作者Thanthu

火山引擎 最新活动