この記事でわかること

  • FFmpegのRTMPプッシュの基本構文
  • YouTube Live・Twitchへのライブ配信コマンド
  • エンコード設定(ビットレート・解像度・音声)
  • ファイルをループ再生して配信する方法
  • 低遅延(low-latency)配信設定
  • よくあるエラーと対処法

テスト済みバージョン: FFmpeg 7.0で確認済み
対象 OS: Windows / macOS / Linux


RTMP とは

RTMP(Real-Time Messaging Protocol)は、Adobeが開発したライブ動画配信プロトコルです。YouTube Live・Twitch・Facebook Live など、ほぼすべての主要配信プラットフォームがRTMP入力に対応しています。

FFmpegはRTMPクライアントとして動作し、エンコードした映像・音声ストリームをRTMPサーバーにプッシュできます。


基本構文

ffmpeg [入力] [エンコードオプション] -f flv rtmp://サーバーURL/ストリームキー

RTMP配信では出力フォーマットに -f flv を指定します(RTMPはFLVをコンテナとして使用)。


YouTube Live への配信

ストリームキーの確認

YouTube Studioにログイン → ライブ配信 → ストリームキーをコピー(例: xxxx-xxxx-xxxx-xxxx-xxxx

基本コマンド(ウェブカメラ + マイク)

# Linux / macOS (v4l2 + pulseaudio)
ffmpeg \
  -f v4l2 -i /dev/video0 \
  -f pulse -i default \
  -c:v libx264 -preset veryfast -b:v 3000k -maxrate 3500k -bufsize 6000k \
  -pix_fmt yuv420p -g 60 -keyint_min 60 \
  -c:a aac -b:a 128k -ar 44100 \
  -f flv rtmp://a.rtmp.youtube.com/live2/YOUR_STREAM_KEY
# Windows (dshow)
ffmpeg \
  -f dshow -i video="Webcam Name":audio="Microphone Name" \
  -c:v libx264 -preset veryfast -b:v 3000k -maxrate 3500k -bufsize 6000k \
  -pix_fmt yuv420p -g 60 -keyint_min 60 \
  -c:a aac -b:a 128k -ar 44100 \
  -f flv rtmp://a.rtmp.youtube.com/live2/YOUR_STREAM_KEY

重要なパラメータ

オプション説明
-preset veryfastエンコード速度(リアルタイム処理のため veryfast/ultrafast 推奨)
-b:v 3000k映像ビットレート
-maxrate 3500k最大ビットレート
-bufsize 6000kバッファサイズ(maxrateの2倍が目安)
-g 60キーフレーム間隔(FPSと同じ値 = 1秒ごとにキーフレーム)
-keyint_min 60最小キーフレーム間隔
-pix_fmt yuv420pYouTube推奨ピクセルフォーマット

YouTube 解像度・ビットレート推奨値

解像度FPS映像ビットレート音声ビットレート
720p302500〜4000 kbps128 kbps
1080p304500〜6000 kbps192 kbps
1080p607500〜9000 kbps192 kbps
4K3015000〜30000 kbps256 kbps

Twitch への配信

ストリームキーの確認

Twitch ダッシュボード → 設定 → 配信 → 主ストリームキーをコピー

基本コマンド

ffmpeg \
  -f v4l2 -i /dev/video0 \
  -f pulse -i default \
  -c:v libx264 -preset veryfast -b:v 4500k -maxrate 5000k -bufsize 9000k \
  -pix_fmt yuv420p -g 60 -keyint_min 60 \
  -c:a aac -b:a 160k -ar 44100 \
  -f flv rtmp://live.twitch.tv/app/YOUR_STREAM_KEY

Twitchのビットレート上限は 6000 kbps(映像) です。超えないように設定してください。

近くのTwitchサーバーを選択

# 東京サーバー
rtmp://live-tyo.twitch.tv/app/YOUR_STREAM_KEY

# 大阪サーバー
rtmp://live-osa.twitch.tv/app/YOUR_STREAM_KEY

動画ファイルをループして配信(放送局スタイル)

録画済みの動画を繰り返し流す方法です。

ffmpeg \
  -re -stream_loop -1 -i input.mp4 \
  -c:v libx264 -preset veryfast -b:v 3000k -maxrate 3500k -bufsize 6000k \
  -pix_fmt yuv420p -g 60 \
  -c:a aac -b:a 128k \
  -f flv rtmp://a.rtmp.youtube.com/live2/YOUR_STREAM_KEY
オプション説明
-re実際の再生速度でファイルを読み込む(リアルタイム配信に必須)
-stream_loop -1無限ループ(0=ループなし、-1=無限)

複数プラットフォームへの同時配信

tee muxerを使うと1回のエンコードで複数のRTMPサーバーに同時配信できます。

ffmpeg \
  -f v4l2 -i /dev/video0 \
  -f pulse -i default \
  -c:v libx264 -preset veryfast -b:v 3000k -maxrate 3500k -bufsize 6000k \
  -pix_fmt yuv420p -g 60 \
  -c:a aac -b:a 128k \
  -f tee -map 0:v -map 1:a \
  "[f=flv]rtmp://a.rtmp.youtube.com/live2/YOUTUBE_KEY|[f=flv]rtmp://live.twitch.tv/app/TWITCH_KEY"

デスクトップキャプチャを配信

Linux(X11)

ffmpeg \
  -f x11grab -s 1920x1080 -r 30 -i :0.0+0,0 \
  -f pulse -i default \
  -c:v libx264 -preset veryfast -b:v 4000k -maxrate 4500k -bufsize 8000k \
  -pix_fmt yuv420p -g 60 \
  -c:a aac -b:a 128k \
  -f flv rtmp://a.rtmp.youtube.com/live2/YOUR_STREAM_KEY

macOS(AVFoundation)

ffmpeg \
  -f avfoundation -capture_cursor 1 -i "1:0" \
  -c:v libx264 -preset veryfast -b:v 4000k -maxrate 4500k -bufsize 8000k \
  -pix_fmt yuv420p -g 60 \
  -c:a aac -b:a 128k \
  -f flv rtmp://a.rtmp.youtube.com/live2/YOUR_STREAM_KEY

低遅延設定(LL-HLS / 低レイテンシ配信向け)

ffmpeg \
  -f v4l2 -i /dev/video0 \
  -f pulse -i default \
  -c:v libx264 -preset ultrafast -tune zerolatency \
  -b:v 2000k -maxrate 2000k -bufsize 2000k \
  -pix_fmt yuv420p -g 30 -keyint_min 30 \
  -c:a aac -b:a 128k \
  -f flv rtmp://a.rtmp.youtube.com/live2/YOUR_STREAM_KEY

-tune zerolatency-preset ultrafast を組み合わせると遅延を最小化できますが、画質はやや低下します。


GPU エンコードで CPU 負荷を下げる

NVIDIA (NVENC)

ffmpeg \
  -f v4l2 -i /dev/video0 \
  -f pulse -i default \
  -c:v h264_nvenc -preset p4 -b:v 4000k -maxrate 4500k -bufsize 8000k \
  -pix_fmt yuv420p -g 60 \
  -c:a aac -b:a 128k \
  -f flv rtmp://a.rtmp.youtube.com/live2/YOUR_STREAM_KEY

Apple VideoToolbox (macOS)

ffmpeg \
  -f avfoundation -i "1:0" \
  -c:v h264_videotoolbox -b:v 4000k \
  -pix_fmt yuv420p -g 60 \
  -c:a aac -b:a 128k \
  -f flv rtmp://a.rtmp.youtube.com/live2/YOUR_STREAM_KEY

トラブルシューティング

Connection refused / Server error

  • ストリームキーが間違っています。YouTube/Twitchダッシュボードで最新のキーを確認してください
  • YouTube Liveでは配信開始前にスケジュール設定が必要な場合があります

映像が途切れる・ドロップフレームが多い

ビットレートを下げるか、-presetultrafast に変更してCPU負荷を軽減してください。

-preset ultrafast -b:v 2000k

音声がずれる

# 映像と音声を同期させる
-async 1

avformat_write_header: Connection timed out

ネットワーク接続またはRTMP URLを確認してください。YouTubeのRTMPエンドポイントは rtmp://a.rtmp.youtube.com/live2/ です。


関連リソース

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

FFmpeg チートシート

関連記事


動作確認: ffmpeg 7.0 / Ubuntu 24.04
一次ソース: ffmpeg.org/ffmpeg-protocols.html#rtmp