H.264 vs H.265 vs AV1:動画エンコーダー深度比較
三大主流動画エンコーダーの圧縮効率、エンコード速度、ブラウザ対応、特許ライセンスを全面比較し、最適なエンコードソリューション選びをサポートします。
続きを読む →三大ライブ配信プロトコルを徹底比較、ゼロからライブ配信システムを構築する方法
RTMP(Real-Time Messaging Protocol)はMacromedia(後にAdobeに買収)が開発したリアルタイムメッセージングプロトコルで、当初はFlashプレーヤーとサーバー間の音声・動画伝送に使用されていました。
Flashが歴史的役割を終えつつありますが、RTMPは現在でもライブ配信の推流側で最も広く使われているプロトコルです。抖音、B站、Twitchなど、ほぼすべてのライブ配信プラットフォームがRTMP推流に対応しています。
SRT(Secure Reliable Transport)はHaivisionが開発したオープンソースの動画伝送プロトコルで、UDPベースでありながらTCPのような信頼性を提供します。
SRTの最大のメリットは、不安定なネットワーク環境でも低遅延かつ高品質な伝送を維持できる点です。リモート制作や屋外ライブ配信などのシーンに適しています。
WebRTC(Web Real-Time Communication)はウェブブラウザでのリアルタイム通信技術で、ブラウザ間でプラグインをインストールすることなく、直接音声・動画通信を行うことができます。
WebRTCの最大のメリットは、遅延が非常に小さい(通常500ms以下)ことと、ブラウザにネイティブ対応している点です。リアルタイムインタラクティブ配信やビデオ会議などのシーンに非常に適しています。
遅延はライブ配信プロトコルの最も重要な指標の1つであり、アプリケーションシーンによって要求される遅延は異なります。
| プロトコル | 典型的な遅延 | 遅延レベル |
|---|---|---|
| RTMP | 1-3秒 | 低遅延 |
| SRT | 0.5-2秒 | 超低遅延 |
| WebRTC | 100-500ms | 極低遅延 |
ライブ配信の推流ではネットワークが不安定になることが多く、プロトコルのネットワーク適応性は非常に重要です。
| 特性 | RTMP | SRT | WebRTC |
|---|---|---|---|
| 伝送プロトコル | TCP | UDP + ARQ | UDP |
| パケットロス再送 | ✓ TCP再送 | ✓ 選択的再送 | △ 一部対応 |
| パケットロスの影響 | 大(カクつきが蓄積) | 小 | 小(画質低下で対応) |
| 帯域変動 | 低い | 高い | 非常に高い(自動適応) |
| 暗号化 | △ RTMPS | ✓ AES-128/256 | ✓ DTLS-SRTP |
OBS Studioは最も人気のあるライブ配信ソフトウェアです。以下では、異なるプロトコルでの推流設定方法を紹介します。
rtmp://あなたのサーバーアドレス/livesrt://あなたのサーバーアドレス:9000?streamid=ストリーム名Nginx-RTMPは最も一般的なセルフホスト型ライブ配信サーバーソリューションです。以下では、迅速な構築方法を紹介します。
# 依存関係のインストール
sudo apt update
sudo apt install -y build-essential libpcre3 libpcre3-dev libssl-dev zlib1g-dev
# nginxとnginx-rtmp-moduleのダウンロード
wget http://nginx.org/download/nginx-1.24.0.tar.gz
wget https://github.com/arut/nginx-rtmp-module/archive/refs/heads/master.zip -O nginx-rtmp-module.zip
# 解凍
tar zxf nginx-1.24.0.tar.gz
unzip nginx-rtmp-module.zip
# コンパイルとインストール
cd nginx-1.24.0
./configure --add-module=../nginx-rtmp-module-master
make
sudo make install
/usr/local/nginx/conf/nginx.confを編集し、httpブロックの前にrtmp設定を追加します:
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
record off;
# HLS設定
hls on;
hls_path /tmp/hls;
hls_fragment 3s;
hls_playlist_length 10s;
}
}
}
次にhttpブロック内にHLSアクセス設定を追加します:
location /hls {
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /tmp;
add_header Cache-Control no-cache;
add_header Access-Control-Allow-Origin *;
}
# nginxの起動
sudo /usr/local/nginx/sbin/nginx
# 設定の再読み込み
sudo /usr/local/nginx/sbin/nginx -s reload
# 停止
sudo /usr/local/nginx/sbin/nginx -s stop
FFmpegを使用して推流テストを行います:
ffmpeg -re -i input.mp4 -c copy -f flv rtmp://localhost/live/stream1
以下のアドレスで視聴できるようになります:
rtmp://あなたのサーバーIP/live/stream1http://あなたのサーバーIP/hls/stream1.m3u8ローカルファイルの推流(リアルタイムレート):
ffmpeg -re -i input.mp4 -c:v libx264 -b:v 2500k -g 60 \
-c:a aac -b:a 128k -f flv rtmp://server/live/stream
-reパラメータは、入力をネイティブフレームレートで読み取り、リアルタイムライブ配信をシミュレートすることを示します。
# Linux
ffmpeg -f v4l2 -i /dev/video0 -f alsa -i default \
-c:v libx264 -b:v 2000k -g 60 \
-c:a aac -b:a 128k \
-f flv rtmp://server/live/stream
# Windows
ffmpeg -f dshow -i video="カメラ名":audio="マイク名" \
-c:v libx264 -b:v 2000k -g 60 \
-c:a aac -b:a 128k \
-f flv rtmp://server/live/stream
# 推流側
ffmpeg -re -i input.mp4 -c:v libx264 -b:v 2500k -g 30 \
-c:a aac -b:a 128k -f mpegts srt://0.0.0.0:9000?mode=listener
# 再生側(または引き取り転送)
ffplay srt://送信側IP:9000?mode=caller
# X11 (Linux)
ffmpeg -f x11grab -s 1920x1080 -r 30 -i :0.0 \
-c:v libx264 -b:v 3000k -g 60 \
-c:a aac -b:a 128k \
-f flv rtmp://server/live/stream
# gdigrab (Windows)
ffmpeg -f gdigrab -s 1920x1080 -r 30 -i desktop \
-c:v libx264 -b:v 3000k -g 60 \
-c:a aac -b:a 128k \
-f flv rtmp://server/live/stream
| 画質レベル | 解像度 | フレームレート | 動画ビットレート | 音声ビットレート |
|---|---|---|---|---|
| 標準画質 | 854×480 | 30 | 800-1500k | 96-128k |
| 高画質 | 1280×720 | 30 | 1500-3000k | 128k |
| フルHD | 1920×1080 | 30 | 3000-6000k | 128-192k |
| フルHD高フレームレート | 1920×1080 | 60 | 4500-8000k | 128-192k |
ライブ配信プロトコルの選択は、具体的なシーンに応じて決定する必要があります:
ほとんどのユーザーにとって、RTMP推流 + HLS/HTTP-FLV配信が最も安定したソリューションです。低遅延のインタラクションが必要な場合は、WebRTCを検討するとよいでしょう。
ライブ配信ストリームが正常かどうかをテストしたいですか?当サイトの FLV/RTMPオンラインプレーヤーでライブ配信ストリームの可用性をすぐに確認できます。
その他の役立つ記事とツール
三大主流動画エンコーダーの圧縮効率、エンコード速度、ブラウザ対応、特許ライセンスを全面比較し、最適なエンコードソリューション選びをサポートします。
続きを読む →動画圧縮の原理を深く解説。H.264/H.265のI/P/Bフレーム、CRF、ビットレート、GOP構造、さらにFFmpegによる実践的な圧縮コマンドを紹介します。
続きを読む →主流音声フォーマットの特性、ビットレートの選び方、適用シーンを詳しく解説。FFmpegを使用した音声変換の実践コマンドも紹介します。
続きを読む →