跳转到主要内容
在使用 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_imagetweet_videotweet_gif)。 最常见的媒体类别如下:
  • tweet_image
  • tweet_video
  • tweet_gif
  • dm_image
  • dm_video
  • dm_gif
  • subtitles
如果您是 Ads API 合作伙伴,请参阅这些文档,了解关于推广视频的推荐媒体类别的更多信息。

图像规范与建议

图像文件必须同时满足以下要求:
  • 支持的图像媒体类型JPGPNGGIFWEBP
  • 图像大小<= 5 MB
  • 动画 GIF 大小<= 15 MB
上述文件大小上限由媒体上传端点强制执行。此外,在调用包含 media_id 的 Post 创建(或类似)端点时,还会应用与产品实体相关的单独文件大小上限。文件大小限制及其他约束可能会因 media_category 参数而有所不同。

动图(GIF)使用建议

即使文件大小符合限制,GIF 在创建 Post 时也可能失败。请遵循以下约束以提高成功率。
  • 分辨率<= 1280x1080width 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
  • 尺寸:必须介于 32x321280x1024 之间
  • 文件大小:不得超过 512 MB
  • 时长:必须介于 0.5 秒140 秒 之间
  • 纵横比:必须介于 1:33:1 之间
  • 像素纵横比:必须为 1:1
  • 像素格式:仅支持 YUV 4:2:0
  • 音频必须为低复杂度配置的 AAC(不支持高效 AAC
  • 音频必须为 单声道(mono)立体声(stereo),不支持 5.1 或更高
  • 不得使用开放式 GOP(open GOP)
  • 必须使用逐行扫描

其他信息

下表中的每一行都是上传建议,并非硬性要求。所有上传内容都会针对多个平台进行优化处理。
方向宽度高度视频码率音频码率
横向12807202048K128K
横向640360768K64K
横向320180256K64K
纵向72012802048K128K
纵向360640768K64K
纵向180320256K64K
正方形7207202048K128K
正方形480480768K64K
正方形240240256K32K
有关媒体上传示例,请参阅分段式媒体上传文档

疑难解答

如果在使用 Media API 时遇到问题,请前往开发者论坛的 Media API 分类查找答案。