跳转到主要内容在使用 POST /2/media/upload 端点时,有几个关键概念需要了解。通过 OAuth 上传媒体可能略显复杂,因此我们在此列出了需注意的要点,并提供了一个可运行的示例,展示如何使用该端点。
- 在一条 Post 中,最多可附加 4 张照片、1 个动画 GIF 或 1 个视频。
- 传入的图像应为原始二进制数据或 base64 编码的二进制数据;只要正确设置了 Content-Type(不确定时可使用:
application/octet-stream),无需再进行其他编码或转义。
- 当上传 base64 编码的图像时,请确保在消息的图像部分设置“Content-Transfer-Encoding: base64”。
- 多部分消息的边界必须单独占一行,并以 CRLF 结尾。
- 关于如何使用此端点执行 POST 的示例,建议使用 xurl 进行测试。另请查看可用的 X 库。
- 对于 JavaScript 以及其他无法准确表示长整数的语言,请使用 API 响应中提供的
media_id_string。
Media Category 参数用于定义待上传媒体文件的使用场景,并可能影响媒体上传时施加的文件大小限制或其他约束。在上传媒体时选择正确的媒体类别非常重要,可避免后续使用媒体时出现问题。该参数是在上传流程中作为 INIT 请求的一部分传递的可选值。若未指定媒体类别,则会根据内容类型,将已上传的媒体视为用于 Post 的媒体(tweet_image、tweet_video 或 tweet_gif)。
最常见的媒体类别如下:
tweet_image
tweet_video
tweet_gif
dm_image
dm_video
dm_gif
subtitles
如果您是 Ads API 合作伙伴,请参阅这些文档,了解关于推广视频的推荐媒体类别的更多信息。
图像文件必须同时满足以下要求:
- 支持的图像媒体类型:
JPG、PNG、GIF、WEBP
- 图像大小:
<= 5 MB
- 动画 GIF 大小:
<= 15 MB
上述文件大小上限由媒体上传端点强制执行。此外,在调用包含 media_id 的 Post 创建(或类似)端点时,还会应用与产品实体相关的单独文件大小上限。文件大小限制及其他约束可能会因 media_category 参数而有所不同。
即使文件大小符合限制,GIF 在创建 Post 时也可能失败。请遵循以下约束以提高成功率。
- 分辨率:
<= 1280x1080(width x height)
- 帧数:
<= 350
- 像素总数:
<= 3 亿(width * height * num_frames)
- 文件大小:
<= 15MB
要处理更大的 GIF,请使用带有 media_category 参数的分片上传端点。这样可使服务器异步处理 GIF 文件,这是处理较大文件的必要条件。传入 media_category=tweet_gif,为包含动图(GIF)的 Post 启用异步上传。
请在上传媒体时使用异步路径(Async Path)。
- 视频编码:
H264 High Profile
- 帧率:
30 FPS, 60 FPS
- 视频分辨率:
1280x720(横屏)、720x1280(竖屏)、720x720(正方形)。订阅用户可上传 1080p 视频并获得 1080p 播放;未订阅用户可上传 720p 视频并获得 720p 播放。
- 最低视频码率:
5,000 kbps
- 最低音频码率:
128 kbps
- 音频编码:
AAC LC
- 宽高比:
16:9(横屏或竖屏),1:1(正方形)
- 帧率:不得高于
60 FPS
- 尺寸:必须介于
32x32 与 1280x1024 之间
- 文件大小:不得超过
512 MB
- 时长:必须介于
0.5 秒 与 140 秒 之间
- 纵横比:必须介于
1:3 与 3:1 之间
- 像素纵横比:必须为
1:1
- 像素格式:仅支持 YUV 4:2:0
- 音频必须为低复杂度配置的
AAC(不支持高效 AAC)
- 音频必须为
单声道(mono) 或 立体声(stereo),不支持 5.1 或更高
- 不得使用
开放式 GOP(open GOP)
- 必须使用
逐行扫描
下表中的每一行都是上传建议,并非硬性要求。所有上传内容都会针对多个平台进行优化处理。
| 方向 | 宽度 | 高度 | 视频码率 | 音频码率 |
|---|
| 横向 | 1280 | 720 | 2048K | 128K |
| 横向 | 640 | 360 | 768K | 64K |
| 横向 | 320 | 180 | 256K | 64K |
| 纵向 | 720 | 1280 | 2048K | 128K |
| 纵向 | 360 | 640 | 768K | 64K |
| 纵向 | 180 | 320 | 256K | 64K |
| 正方形 | 720 | 720 | 2048K | 128K |
| 正方形 | 480 | 480 | 768K | 64K |
| 正方形 | 240 | 240 | 256K | 32K |
有关媒体上传示例,请参阅分段式媒体上传文档。
如果在使用 Media API 时遇到问题,请前往开发者论坛的 Media API 分类查找答案。