この記事でわかること
- 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 yuv420p | YouTube推奨ピクセルフォーマット |
YouTube 解像度・ビットレート推奨値
| 解像度 | FPS | 映像ビットレート | 音声ビットレート |
|---|---|---|---|
| 720p | 30 | 2500〜4000 kbps | 128 kbps |
| 1080p | 30 | 4500〜6000 kbps | 192 kbps |
| 1080p | 60 | 7500〜9000 kbps | 192 kbps |
| 4K | 30 | 15000〜30000 kbps | 256 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では配信開始前にスケジュール設定が必要な場合があります
映像が途切れる・ドロップフレームが多い
ビットレートを下げるか、-preset を ultrafast に変更して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 7.0 / Ubuntu 24.04
一次ソース: ffmpeg.org/ffmpeg-protocols.html#rtmp