YouTubeは、アップロードされた動画をすべて再エンコードします。

YouTube推奨仕様まとめ

項目 YouTube推奨値
映像コーデック H.264(MP4推奨)
フレームレート 撮影したときと同じ(24・25・30・48・50・60 fps など)
解像度 最大8K
音声コーデック AAC-LC(Opus も可)
音声サンプリングレート 48kHz
音声チャンネル ステレオ(5.1 も可)
音量レベル 指定なし(-14 LUFSがよく使われる目安)

基本コマンド(1080p・H.264)

ffmpeg -i input.mp4 \
  -c:v libx264 \
  -preset slow \
  -crf 18 \
  -profile:v high \
  -level 4.1 \
  -pix_fmt yuv420p \
  -movflags +faststart \
  -c:a aac \
  -b:a 384k \
  -ar 48000 \
  -ac 2 \
  output_youtube.mp4
オプション 値 理由
-crf 18 18(高品質) YouTubeの再エンコードで画質が下がるので、元の動画は高画質にしておく
-preset slow slow CRFと組み合わせると効率よく圧縮できる
-profile:v high High YouTube推奨プロファイル
-level 4.1 4.1 1080p/30fps以下はこれで十分
-pix_fmt yuv420p yuv420p 互換性が最も高い(ブラウザ・スマホで再生できる)
-movflags +faststart — Webで再生したとき、すぐに再生が始まる
-b:a 384k 384kbps YouTube推奨の音声ビットレート(ステレオ)
-ar 48000 48kHz YouTube推奨サンプリングレート

解像度別推奨ビットレート

SDR(標準ダイナミックレンジ)

解像度 フレームレート 推奨映像ビットレート FFmpegコマンド
4K (2160p) 24-30fps 35-45 Mbps -b:v 40M
4K (2160p) 48-60fps 53-68 Mbps -b:v 60M
1080p 24-30fps 8 Mbps -b:v 8M
1080p 48-60fps 12 Mbps -b:v 12M
720p 24-30fps 5 Mbps -b:v 5M
480p 24-30fps 2.5 Mbps -b:v 2500k

CRFモードで全自動(推奨)

CRFモードは、画質を基準にしてエンコードする方式です。ビットレートを手で決めるより、場面に合わせてデータ量がうまく配分されます。

# 1080p・24〜30fps の素材用
ffmpeg -i input.mp4 \
  -c:v libx264 -crf 18 -preset slow -pix_fmt yuv420p \
  -vf "scale=-2:1080:flags=lanczos" \
  -c:a aac -b:a 384k -ar 48000 -ac 2 \
  -movflags +faststart \
  output_1080p.mp4

# 1080p・48〜60fps の素材用
ffmpeg -i input.mp4 \
  -c:v libx264 -crf 17 -preset slow -pix_fmt yuv420p \
  -vf "scale=-2:1080:flags=lanczos" \
  -c:a aac -b:a 384k -ar 48000 -ac 2 \
  -movflags +faststart \
  output_1080p60.mp4

どちらも、元の動画のフレームレートのまま出力します。YouTube は、撮影したときと同じフレームレートでのアップロードを勧めています(YouTube ヘルプ)。scale=-2:1080 は、縦横比を保ったまま高さを 1080 にします。

音量を -14 LUFS に正規化

# -14 LUFS に正規化(YouTube 向けによく使われる目安。loudnorm 1 回だと 1 LU ほどずれることがある)
ffmpeg -i input.mp4 \
  -af "loudnorm=I=-14:TP=-1.5:LRA=11" \
  -c:v copy \
  -c:a aac -b:a 384k -ar 48000 \
  output_normalized.mp4

loudnorm は音声を192kHzに上げて処理するので、-ar 48000 で48kHzに戻します。

ショートパス:既存の動画を最小限の処理でアップロード

すでにH.264でエンコードされた動画なら、再エンコードせずに、入れ物(コンテナ)だけをMP4に変えられます。

# MOV → MP4(コーデック変換なし・高速)
ffmpeg -i input.mov -c copy -movflags +faststart output.mp4

# MKV → MP4(コーデック変換なし)
ffmpeg -i input.mkv -c copy output.mp4

H.265(HEVC)でアップロードする場合

同じ画質(VMAF)で比べると、H.265のファイルはH.264より25〜35%小さくなりました(リンク先の記事のテスト動画での実測)。ただしYouTubeが推奨するのはH.264です。YouTubeは再エンコードするので、H.265でアップロードしても、YouTube上の画質が良くなるとは限りません。

ffmpeg -i input.mp4 \
  -c:v libx265 -crf 20 -preset slow -pix_fmt yuv420p \
  -tag:v hvc1 \
  -c:a aac -b:a 384k -ar 48000 \
  -movflags +faststart \
  output_h265.mp4

-tag:v hvc1 は、iOS/macOSのQuickTimeで再生できるようにするために必要です。

よくある問題と解決策

Q. YouTubeアップロード後に画質が悪くなった

元の動画のビットレートが低すぎると、YouTubeの再エンコードでさらに画質が落ちます。H.264なら-crf 18以下、H.265なら-crf 20以下の高画質設定でエンコードしてください。

Q. 音声が消えている

# 音声ストリームの確認
ffprobe -v quiet -print_format json -show_streams input.mp4 | grep codec_type

結果に "codec_type": "audio" の行がなければ、ファイルに音声が入っていません。音声を変換するときは、YouTubeが推奨するAAC-LC(-c:a aac)にします。

Q. 縦動画(ショート向け)の設定

# もともと縦(9:16)の動画を 1080×1920 にする
ffmpeg -i input.mp4 \
  -vf "scale=1080:1920:flags=lanczos" \
  -c:v libx264 -crf 18 -preset slow -pix_fmt yuv420p \
  -c:a aac -b:a 384k -ar 48000 \
  -movflags +faststart \
  output_shorts.mp4

横長(16:9)の動画にこのコマンドを使っても、縦動画にはなりません。映像が横に縮められ、プレーヤーでは 16:9 のまま表示されます。横長の動画は、先に 9:16 に切り出すか、上下に余白を付けてください(縦動画の作り方)。

ブラウザで今すぐ試す

よくある質問

YouTube が推奨するビットレートはいくつ?

1080p・30fpsなら8 Mbps、1080p・60fpsなら12 Mbpsが公式の推奨値です。推奨より上げても、画質はあまり上がりません。8 Mbps を 16 Mbps にしても、書き出した動画の VMAF は 2.2 ポイントしか上がらず、ファイルは約 2 倍になりました(アニメ 10 秒での実測)。

1080p で撮ったが 4K にすべき?

手元にある最も高い解像度でアップロードしてください。1080pの素材を4Kに拡大しても、4Kの細かさは出ません。

2-pass と CRF どっち?

CRF 17〜18 と -preset slow なら画質は十分高く、設定も簡単です。2-passが役に立つのは、ファイルサイズを正確に決めたいときだけです。

YouTube 処理後にぼやけて見える

アップロード直後は、低い画質しか選べないことがあります。1080pや4Kは、処理が終わるまで数時間かかることがあります(YouTube ヘルプ)。

HDR でアップすべき?

HDRで撮影して仕上げ、10-bit で、BT.2020とPQ/HLGが正しくタグ付けされた素材のときだけにしてください。HDRに対応していない画面では、YouTubeが自動でSDRに変換します。難しい映像では、見え方が思わしくないことがあります(YouTube ヘルプ)。