RTMPクイックスタート

RTMP配信開始の流れlink

以下のような流れでRTMP配信を行うことができます。

  1. ImageFluxのRTMP配信チャンネル作成APIにリクエストを送り、チャンネルを作成します。
  2. RTMP配信チャンネル作成APIのレスポンスで得られたRTMP配信先URLにRTMPクライアントから接続し、配信を行います。
  3. おおむね数秒後(チャンネル作成時の設定内容によります)にHLS配信が開始されるので、RTMP配信チャンネル作成APIのレスポンスで得られたHLSプレイリストURLで視聴します。 また、チャンネル作成時にアーカイブ保存先を設定していた場合、HLS形式で配信内容が順次アップロードされていきます。
  4. RTMPクライアントが切断することでおおむね数秒後にHLS配信も終了します。 なお、同一のRTMP配信先URLに対して再度RTMPクラアントから接続して配信を行うと、再び同一のHLSプレイリストURLに対してHLS配信が再開されます。
  5. 配信が終了して不要となったチャンネルは、チャンネル削除APIにリクエストを送って削除してください。 管理コンソールのチャンネル一覧画面からも削除できます。

HLS視聴方法link

Chrome/FirefoxブラウザでHLSを再生するにはHLS.jsというJavaScriptライブラリ、またはそれを組み込んだJavaScript動画プレイヤーライブラリを使用することが一般的です。

HLS.jsには、さまざまなオプション設定があります。通信エラーによるタイムアウトのデフォルト値がライブ配信用としては長いため、下記のようにセグメント長+1秒にすることでパケットロスを早期に検出し、リトライを繰り返すことができます。

セグメント長とは、動画ファイルの分割間隔のことです。CreateRTMPChannel APIのリクエストに含まれているdurationSecondsの値で指定しています。

下記に、セグメント長を2秒とした場合の推奨の設定例を紹介します。2秒+1=3秒でタイムアウトが推奨となりますので、タイムアウト関連の6項目を3000(ミリ秒)としています。 セグメント長を3秒とした場合、3秒+1=4秒でタイムアウトが推奨となりますので、下記の3000(ミリ秒)の6項目をすべて4000(ミリ秒)に変えてください。

var config = {
  manifestLoadingTimeOut: 3000, // マスターマニフェストのタイムアウト(ミリ秒)
  manifestLoadingMaxRetry: 10, // マスターマニフェストを何回リトライするか
  manifestLoadingMaxRetryTimeout: 3000, // タイムアウトしたあとリトライするまでの最大待機時間(ミリ秒)
  levelLoadingTimeOut: 3000, // レベルマニフェストのタイムアウト(ミリ秒)
  levelLoadingMaxRetry: 10, // レベルマニフェストを何回リトライするか
  levelLoadingMaxRetryTimeout: 3000, // タイムアウトしたあとリトライするまでの最大待機時間(ミリ秒)
  fragLoadingTimeOut: 3000, // 動画データのタイムアウト(ミリ秒)
  fragLoadingMaxRetry: 10, // 動画データを何回リトライするか
  fragLoadingMaxRetryTimeout: 3000, // 動画データがタイムアウトしたあとリトライするまでの最大待機時間(ミリ秒)
  liveBackBufferLength: 0, // 再生し終わったデータを保持する長さ(秒)
};
var hls = new Hls(config);

統計情報link

配信時間やエンコード時間などの情報は管理コンソールのWebRTC/HLS統計画面で確認できます。

RTMP配信仕様link

現時点の各種仕様です。将来的には変更される可能性があります。

連続配信時間link

RTMPクライアントから接続して連続して配信を行う場合、最大 8時間 でサーバ側から切断されます。

この連続配信時間のカウントは途中でRTMPクライアントが切断した場合(クライアント側・サーバ側いずれからの切断でも同様)は0に戻ります。つまり、いったん切断して再度接続した場合、そこからまた最大8時間の配信が可能となります。

最大同時接続数link

RTMPクライアントの最大の同時接続数、つまり、同時に配信を行うチャンネル数の上限は 10 となります。

お客様の必要に応じてシステム側で設定の変更も可能ですので、もしこれ以上の同時接続が必要な場合はお問い合わせください。

RTMP入力諸元link

RTMPクライアントからImageFluxに入力する映像および音声には、以下のような制限があります。

映像
  コーデック : H.264のみ
    H.264 proflile : baseline/main/high のいずれか
    Bフレーム : 「なし」のみ
  解像度
    幅   : 4096ピクセルまで
    高さ : 4096ピクセルまで
  フレームレート : 60fpsまで
  ビットレート : 1.5Mbpsまで
音声
  コーデック : AAC-LCのみ
  チャンネル数 : 1チャンネル(=モノラル)または2チャンネル(=ステレオ)
  サンプリングレート : 44.1KHzまたは48kHz
  ビットレート : 320kbpsまで

参考事例:OBS Studioからの配信link

OBS Studioから配信する場合、ホーム画面の[設定]から[配信]ページを表示し、[サービス]として「カスタム…」を選択します。 [サーバー]欄にRTMP配信用のURLからチャンネルIDを取り除いた部分を、[ストリームキー]欄にチャンネルIDをそれぞれ入力してください。

サーバー: rtmp://XXXXXXXX.imageflux.jp/live
ストリームキー: <channel_id>

[設定]→[出力]では、[映像エンコーダ]としてH.264系のエンコーダを選択してください。 プラットフォーム・環境により選択可能なエンコーダは異なりますが、利用可能であればハードウェアエンコーダを選択するとよいでしょう。 ハードウェアエンコーダが使用できない場合は x264 というソフトウェアエンコーダが使用できます。

[出力モード]を「詳細」にするとより細かい設定が可能となります。 [キーフレーム間隔]は 0 ではなく 2 秒程度に設定することをお勧めします。 Bフレームについて設定が可能なエンコーダの場合は、Bフレームを使用しないよう設定することをお勧めします。

必要な設定が完了した後は、ホーム画面の[配信開始]で配信を開始できます。 配信を終了するときは[配信終了]を押してください。

推奨設定link

以下はOBS Studioでの必須設定・推奨設定です。

ビデオコーデック: H.264 (必須)
H.264 プロフィール: baseline/main/highいずれも可
キーフレーム間隔: 2秒推奨
Bフレーム: なし (必須)
解像度: 1280x720以下推奨
レートコントロール: CRF(最大ビットレート指定あり)推奨
最大ビットレート: 1500kbps以下

オーディオコーデック: AAC-LC(必須)
サンプリングレート: 48kHz (推奨)
チャンネル: 2(ステレオ) (推奨)
ビットレート: 160kbps以下推奨