使用 POST media/upload 端点时,有几个重要概念需要理解。使用 OAuth 上传媒体可能有点棘手,因此我们概述了一些需要记住的事项,以及如何使用此端点的工作示例。

注意事项

  • 因为该方法使用多部分 POST,所以 OAuth 的处理方式不同。计算 OAuth 签名 basestring 或签名时,不使用 POST 或查询字串参数。只使用 oauth_* 参数。
  • 您可以在推文中最多附加 4 张照片、1 个动画 GIF 或 1 段视频。
  • 传输的图像应是图像的原始二进制或经过二进制 base64 编码,只要适当设置了 Content-Type(有疑问时:application/octet-stream),就不需要对内容进行编码或转义。
  • 在发布 base64 编码的图像时,请确保在私信的图像部分上设置“Content-Transfer-Encoding: base64”。
  • 多部分私信边界必须位于自身的行上,并由 CRLF 终止。
  • 对于如何使用此端点 POST 的工作示例,我们建议使用 twurl 进行测试。另外,查看可用的 Twitter 库,包括 large-video-upload-python 库。
  • 使用 JavaScript 在 API 响应中提供的 media_id_string 以及其他无法准确表示长整数的语言。
     

媒体类别

媒体类型参数定义要上传的媒体文件用例,并会影响文件大小限制或其他针对媒体上传的限制。上传媒体时使用正确的媒体类别非常重要,以避免在尝试使用媒体时出现问题。该参数是初始化请求中输入的可选值,属于上传流。如果未指定媒体类别,则将上传的媒体假定为推文媒体(图像、视频或 GIF),具体视内容类型而定。

最常见的媒体类别如下所示:

  • TweetImage
  • TweetVideo
  • TweetGif
  • DmImage
  • DmVideo
  • DmGif
  • Subtitles

如果您是广告 API 合作伙伴,请参阅这些文档,获取关于推广视频的推荐媒体类别的更多信息。

图像规格和建议

图像文件必须满足以下所有标准:

  • 支持的图像媒体类型:JPG、PNG、GIF、WEBP
  • 图像尺寸小于等于 5 MB、动画 GIF 尺寸小于等于 15 MB

上面的文件大小限制由媒体上传端点强制执行。此外,在使用 media_id 调用推文创建(或类似的)端点时,还存在单独的产品实体特定的文件大小限制。 文件大小限制及其他限制可能会随着 media_category 参数的不同而变化。

动画 GIF 建议

GIF 在创建推文时可能会失败,即使未超出文件大小限制。遵循以下限制要求来提高成功率。

  • 分辨率应小于等于 1280x1080(宽 x 高)
  • 帧数小于等于 350
  • 像素数量(宽 * 高 * 帧数)小于等于 3 亿
  • 文件大小小于等于 15 MB

为了处理更大的 GIF,请使用带有 media_category 参数的分块上传端点。此端点允许服务器异步处理 GIF 文件,这是处理较大文件的要求。传递 media_category=tweet_gif 以针对附有动画 GIF 的推文启用异步上传操作。
 

视频规格和建议

请使用异步路径进行媒体上传。

建议:

  • 建议的视频编解码器:H264 High Profile
  • 建议帧率:30 FPS、60 FPS
  • 建议视频分辨率:1280x720(横向)、720x1280(纵向)、720x720(方形)
  • 建议的最小视频码率: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
  • 音频必须是单声道或立体声,而不是 5.1 或更高
  • 不能有开放式 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


如需了解有关如何上传媒体的示例,请参阅分块媒体上传文档
 

疑难解答

有关媒体 API 的问题,请浏览开发者论坛中的媒体 API 类别获取答案。