YouTubeに動画をアップロードする際、適切なエンコード設定をせずに投稿すると再エンコードによる品質低下が起きます。この記事では、YouTubeの推奨仕様に準拠したFFmpegコマンドを解説します。

動作確認: FFmpeg 6.1(ubuntu-latest / GitHub Actions CI検証済み)


YouTube推奨仕様まとめ

項目YouTube推奨値
映像コーデックH.264(MP4推奨)
フレームレート24, 25, 30, 48, 50, 60 fps
解像度1080p以上推奨(最大8K)
音声コーデックAAC-LC
音声サンプリングレート48kHz
音声チャンネルステレオ(2ch)推奨
音量レベル-14 LUFS統合ラウドネス
コンテナMP4(推奨)

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

YouTubeへの最高互換性を持つ設定です。

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 192k \
  -ar 48000 \
  -ac 2 \
  output_youtube.mp4

設定値の意味:

オプション理由
-crf 1818(高品質)YouTubeの再エンコードで品質が下がるため、元動画は高品質に
-preset slowslowCRFと組み合わせると効率よく圧縮できる
-profile:v highHighYouTube推奨プロファイル
-level 4.14.11080p/30fps以下はこれで十分
-pix_fmt yuv420pyuv420p最大互換性(ブラウザ・スマホ対応)
-movflags +faststartWeb再生時の即時開始
-b:a 192k192kbpsYouTubeの音声ビットレート上限
-ar 4800048kHzYouTube推奨サンプリングレート

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

YouTubeは映像を再エンコードするため、「YouTubeが再エンコードした後に高品質になる」よう元動画を高めのビットレートで用意します。

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

解像度フレームレート推奨映像ビットレートFFmpegコマンド
4K (2160p)24-30fps35-45 Mbps-b:v 40M
4K (2160p)48-60fps53-68 Mbps-b:v 60M
1080p24-30fps8 Mbps-crf 18
1080p48-60fps12 Mbps-crf 17
720p24-30fps5 Mbps-crf 20
480p24-30fps2.5 Mbps-crf 23

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

ビットレートを手動指定するより、CRFモードの方がシーンに応じて最適化されます。

# 1080p / 30fps 用
ffmpeg -i input.mp4 \
  -c:v libx264 -crf 18 -preset slow \
  -vf "scale=1920:1080:flags=lanczos,fps=30" \
  -c:a aac -b:a 192k -ar 48000 -ac 2 \
  -movflags +faststart \
  output_1080p.mp4

# 1080p / 60fps 用
ffmpeg -i input.mp4 \
  -c:v libx264 -crf 17 -preset slow \
  -vf "scale=1920:1080:flags=lanczos,fps=60" \
  -c:a aac -b:a 192k -ar 48000 -ac 2 \
  -movflags +faststart \
  output_1080p60.mp4

音量を YouTube 基準に正規化

YouTubeは音量を自動正規化しますが、事前に正規化することで意図した音量でアップロードできます。

# -14 LUFS に正規化(YouTube基準)
ffmpeg -i input.mp4 \
  -af "loudnorm=I=-14:TP=-1.5:LRA=11" \
  -c:v copy \
  output_normalized.mp4

音量調整ツール(ブラウザ完結)でブラウザ上でも同じ処理が可能です。


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

すでにH.264でエンコードされた動画は、再エンコードなしでコンテナだけ変換できます。

# 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)でアップロードする場合

H.265はH.264より50%ほどファイルサイズが小さくなりますが、YouTubeは最終的にVP9またはAV1で再エンコードするため、アップロード元としてH.264と品質差はほとんどありません。

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

-tag:v hvc1 はiOS/macOSでのQuickTime再生互換性のために必要です。


よくある問題と解決策

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

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

Q. 音声が消えている・ずれている

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

音声コーデックがYouTube非対応(PCMなど)の場合はAACに変換してください。

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

# 9:16縦動画(1080×1920)
ffmpeg -i input.mp4 \
  -vf "scale=1080:1920:flags=lanczos" \
  -c:v libx264 -crf 18 -preset slow \
  -c:a aac -b:a 192k -ar 48000 \
  -movflags +faststart \
  output_shorts.mp4

ブラウザで今すぐ試す

動画圧縮ツール — ファイルサイズを抑えながらYouTube向けに圧縮
音量調整ツール — -14 LUFSへのラウドネス正規化
動画フォーマット比較 — MP4・WebM・MOV・MKVの選び方

関連リソース

よく使うオプション・フィルタ・コーデック設定をまとめた PDF チートシートです。手元に置いておくと調べる時間を短縮できます。

FFmpeg チートシート