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 ヘルプ)。