> ## Documentation Index
> Fetch the complete documentation index at: https://generaltranslation.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# ベストプラクティス

[`POST /2/media/upload`](/ja/x-api/media/media-upload) エンドポイントを使用する際に理解しておくべき、いくつかの重要な概念があります。OAuth を使ったメディアのアップロードは少し扱いが難しい場合があるため、このエンドポイントの使い方についての注意点と、実際に動作するサンプルをここにまとめています。

<div id="keep-in-mind">
  ## 留意事項
</div>

* 1つのポストには、写真を最大4枚、またはアニメーションGIF 1つもしくは動画1本を添付できます。
* 送信する画像データは、生のバイナリデータ、またはそのバイナリをbase64エンコードしたものにしてください。`Content-Type` が適切に設定されているかぎり (迷った場合は `application/octet-stream`) 、それ以外のエンコードやエスケープは不要です。
* base64エンコードした画像をポストする場合は、メッセージ内の画像パートに「Content-Transfer-Encoding: base64」を必ず設定してください。
* マルチパートメッセージの境界は、それ単体で1行に配置し、CRLFで終端する必要があります。
* このエンドポイントを使ったPOSTリクエストの動作例については、[xurl](https://github.com/xdevplatform/xurl) を使ってテストすることをおすすめします。また、利用可能な [X Libraries](/ja/resources/tools-and-libraries) も参照してください。
* JavaScript など、長整数を正確に表現できない言語では、APIレスポンスで提供される `media_id_string` を使用してください。

<div id="media-categories">
  ## メディアカテゴリー
</div>

Media Category パラメータは、アップロードするメディアファイルの用途を定義し、メディアアップロード時に適用されるファイルサイズ上限やその他の制約に影響する場合があります。メディアを利用しようとした際の問題を避けるため、メディアをアップロードする際には正しいメディアカテゴリーを指定することが重要です。これはアップロードフローにおいて、INIT リクエストで渡す任意指定の値です。メディアカテゴリーが指定されていない場合、コンテンツタイプに応じて、アップロードされたメディアはポスト用メディア (`tweet_image`、`tweet_video`、`tweet_gif`) であるとみなされます。

最も一般的なメディアカテゴリーは以下のとおりです:

* `tweet_image`
* `tweet_video`
* `tweet_gif`
* `dm_image`
* `dm_video`
* `dm_gif`
* `subtitles`

Ads API パートナーの方は、プロモーション動画に推奨されるメディアカテゴリーについての詳細は [こちらのドキュメント](/ja/x-ads-api/creatives#promoted-video) を参照してください。

<div id="image-specifications-and-recommendations">
  ## 画像の仕様と推奨事項
</div>

画像ファイルは、以下のすべての条件を満たしている必要があります。

* **サポートされている画像メディアの type**: `JPG`, `PNG`, `GIF`, `WEBP`
* **画像サイズ**: `<= 5 MB`
* **アニメーション GIF のサイズ**: `<= 15 MB`

上記のファイルサイズ上限は、メディアアップロードエンドポイントによって適用されます。加えて、Post 作成 (または類似の) エンドポイントを `media_id` とともに呼び出す際に適用される、プロダクトエンティティごとに固有の別のファイルサイズ上限があります。ファイルサイズの上限やその他の制約は、`media_category` パラメータによって異なる場合があります。

<div id="animated-gif-recommendations">
  ## アニメーション GIF の推奨事項
</div>

GIF はファイルサイズ制限内であっても、ポストの作成時に失敗する場合があります。成功率を高めるため、次の制約を守ってください。

* **解像度**: `<= 1280x1080` (`width` x `height`)
* **フレーム数**: `<= 350`
* **ピクセル数**: `<= 300 million` (`width` \* `height` \* `num_frames`)
* **ファイルサイズ**: `<= 15Mb`

より大きな GIF を処理するには、`media_category` パラメータ付きで [chunked upload](/ja/x-api/media/quickstart/media-upload-chunked) エンドポイントを使用してください。これにより、サーバーは GIF ファイルを非同期で処理でき、大きなファイルを処理するにはこの方式が必須となります。アニメーション GIF を含むポストで非同期アップロード動作を有効にするには、`media_category=tweet_gif` を指定してください。

<div id="video-specifications-and-recommendations">
  ## 動画の仕様と推奨事項
</div>

メディアのアップロードには Async Path を使用してください。

<div id="recommended">
  ### 推奨設定
</div>

* **ビデオコーデック**: `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` (正方形)

<div id="advanced">
  ### 高度な要件
</div>

* **フレームレート**: `60 FPS` 以下である必要があります
* **解像度**: `32x32` から `1280x1024` の範囲である必要があります
* **ファイルサイズ**: `512 MB` を超えてはなりません
* **再生時間**: `0.5 秒` から `140 秒` の範囲である必要があります
* **アスペクト比**: `1:3` から `3:1` の範囲である必要があります
* **[ピクセルアスペクト比](https://en.wikipedia.org/wiki/Pixel_aspect_ratio)**: `1:1` である必要があります
* **ピクセルフォーマット**: [YUV](https://en.wikipedia.org/wiki/YUV) 4:2:0 のみがサポートされています
* 音声コーデックは [Low Complexity プロファイルの `AAC`](https://en.wikipedia.org/wiki/Advanced_Audio_Coding#Modular_encoding) である必要があります (High-Efficiency `AAC` はサポートされていません)
* 音声は `mono` または `stereo` であり、5.1 以上ではない必要があります
* [`open GOP`](https://en.wikipedia.org/wiki/Group_of_pictures) を使用してはいけません
* [`progressive scan`](https://en.wikipedia.org/wiki/Progressive_scan) を使用している必要があります

<div id="additional-information">
  ### 追加情報
</div>

以下の表の各行はアップロード時の推奨設定を示していますが、必須ではありません。アップロードされたすべてのメディアは、複数のプラットフォーム向けに最適化されるよう処理されます。

| Orientation | Width | Height | Video Bitrate | Audio Bitrate |
| :---------- | :---- | :----- | :------------ | :------------ |
| Landscape   | 1280  | 720    | 2048K         | 128K          |
| Landscape   | 640   | 360    | 768K          | 64K           |
| Landscape   | 320   | 180    | 256K          | 64K           |
| Portrait    | 720   | 1280   | 2048K         | 128K          |
| Portrait    | 360   | 640    | 768K          | 64K           |
| Portrait    | 180   | 320    | 256K          | 64K           |
| Square      | 720   | 720    | 2048K         | 128K          |
| Square      | 480   | 480    | 768K          | 64K           |
| Square      | 240   | 240    | 256K          | 32K           |

メディアのアップロード方法の例については、[チャンク方式メディアアップロードのドキュメント](/ja/x-api/media/quickstart/media-upload-chunked) を参照してください。

<div id="troubleshooting">
  ### トラブルシューティング
</div>

Media API に関する問題が発生した場合は、開発者フォーラム内の [Media API カテゴリ](https://devcommunity.x.com/c/x-api/media-apis) を参照して、解決方法を確認してください。
