跳转到主要内容
在使用 POST /2/media/upload endpoint 时,有几个重要概念需要了解。使用 OAuth 上传媒体可能稍显复杂,因此我们在此列出了一些注意事项,并提供了一个可运行的示例,演示如何使用该 endpoint。

请注意

  • 在一条 Post 中,最多可附加 4 张照片、1 个动画 GIF 或 1 个视频。
  • 传递的图像应为原始二进制数据或二进制的 base64 编码;只要正确设置 Content-Type(如不确定可使用:application/octet-stream),无需对内容进行其他编码或转义。
  • 当发送 base64 编码的图像时,请确保在消息的图像部分设置“Content-Transfer-Encoding: base64”。
  • 多部分消息的边界必须单独占一行,并以 CRLF 结尾。
  • 有关如何使用此 endpoint 执行 POST 的示例,我们建议使用 xurl 进行测试。同时,查看可用的 X Libraries
  • 对于 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
如果您是 X Ads API 合作伙伴,请参阅这些文档,了解关于推广视频所推荐媒体类别的更多信息。

图像规范与建议

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

动图 GIF 使用建议

即使文件大小符合限制,GIF 在创建 Post 时仍可能失败。请遵循以下约束以提高成功率。
  • 分辨率<= 1280x1080width x height
  • 帧数<= 350
  • 像素数<= 3 亿width * height * num_frames
  • 文件大小<= 15MB
如需处理更大的 GIF,请使用带有 media_category 参数的分片上传 endpoint。这样可使服务器异步处理 GIF 文件,这是处理更大文件的必要条件。传入 media_category=tweet_gif,即可为包含动图 GIF 的 Posts 启用异步上传行为。

视频规格与建议

请使用异步流程进行媒体上传。
  • 视频编码格式H264 High Profile
  • 帧率30 FPS60 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 低复杂度(LC)配置(不支持高效率 AAC
  • 音频必须为 monostereo,不支持 5.1 或更高
  • 不得包含 open GOP
  • 必须使用 progressive scan

更多信息

下表中的每一行均为上传建议,并非必选要求。所有上传内容都会被处理,以便在多个平台上实现优化。
方向宽度高度视频码率音频码率
横向12807202048K128K
横向640360768K64K
横向320180256K64K
纵向72012802048K128K
纵向360640768K64K
纵向180320256K64K
方形7207202048K128K
方形480480768K64K
方形240240256K32K
有关如何上传媒体的示例,请参阅分段式媒体分块上传文档

疑难解答

如果遇到 Media API 的相关问题,请前往开发者论坛的 Media API 分类 查找答案。
I