NextGen Live で RTMP を利用する

このトピックでは、NextGen Live で RTMP を使用して、Facebook や YouTube などの配信先にライブイベントを配信する方法を説明します。

概要

general-block-diagram
ブロック図

RTMP(または RTMPS)出力を使用すると、Brightcove Live チャンネルをソーシャル プラットフォームに同時配信することができます。 このガイドでは、API を利用したプログラムによる方法と、 Live モジュール を使ったポイント&クリック方式の両方を扱います。 注意事項:

新規チャンネルへの RTMP 出力の追加

  1. 新しいチャンネルを作成する際に、画面をスクロールし、RTMP Output セクションまで移動します。
  2. Output Url (出力 URL)を入力し、レンディションを選択します。

  3. Add RTMP Output (RTMP出力の追加)をクリックします。

既存チャンネルへの RTMP 出力の追加

NextGen Live では、すでに作成済みのチャンネルに RTMP 出力を追加できます。
その場合は、対象のチャンネルを選択し、画面をスクロールして RTMP Output セクションまで移動してください。

Facebook Live への配信

Facebook Live を利用すると、ページやプロフィールを通じてフォロワーにライブ配信できます。 ここでは、Facebook アカウントですでにライブ配信が有効になっていることを前提とします (詳細は Facebook のドキュメント を参照してください)。

  1. Facebook にログインし、 → 新しい投稿を作成  → ライブ動画 をクリックします。
  2. ライブ配信を作成 で、ライブ動画を作成 をクリックします。「動画プロデューサー」ダイアログが表示された場合は閉じます。
  3. 動画ソースを選択 で、ストリーミング ソフトウェア を選択します。
  4. Facebook に ストリームキー が表示されます。詳細設定 を展開すると、サーバー URL が表示されます。
  5. サーバー URL をコピーします。
  6. 新規チャンネルへの RTMP 出力の追加、または 既存チャンネルへの RTMP 出力の追加の手順に従います。
  7. 再び Facebook に戻るとプレビューが表示されます。投稿内容を入力し、ライブ配信を開始 をクリックします。
  8. 配信終了後、Facebook で対象の投稿を開き、 → ライブ動画を編集  → ライブ動画を終了 をクリックします。 あわせてエンコーダーも停止してください。

YouTube Live への配信

初めてライブ配信を行う前に、YouTube チャンネルでライブ配信を有効にしておく必要があります。 (有効化には最大 24 時間かかる場合があります。) 詳細は YouTube のドキュメント を参照してください。

  1. YouTube にログインし、 → YouTube Studio を開きます。
  2. 作成 > ライブ配信を開始 をクリックします。
  3. 左側のメニューで 配信 を選択します。
  4. YouTube に ストリームキーストリーム URL が表示されます。
  5. ストリーム URL をクリップボードにコピーします。
  6. 新規チャンネルへの RTMP 出力の追加、または 既存チャンネルへの RTMP 出力の追加の手順に従います。
  7. YouTube にプレビューが表示されたら、 → ライブ配信を開始 をクリックします。
  8. 配信終了後、YouTube Studio で 配信終了 をクリックします。 VOD コピーが自動的に公開されます。エンコーダーも停止してください。

Live API を使用した RTMP 出力の設定

Live API に送信するジョブ定義に RTMP(または RTMPS)出力を含めることで、 Brightcove Live チャンネルに RTMP 出力を追加できます。

  • RTMP 出力付きのライブジョブを作成するには、次の URL に POST リクエストを送信します。

                  
          https://api.live.brightcove.com/v2/accounts/{account_id}/jobs
                  
                

    以下はリクエスト ボディの例です。実際の要件に合わせて値を調整してください。

                  {
            "type": "channel",
            "name": "Live RTMP Output",
            "region": "us-east-1",
            "input": {
              "protocol": "srt",
              "fixed_ingest_ip": false
            },
            "outputs": {
              "video": [
                {
                  "label": "hls270p",
                  "height": 270,
                  "width": 480,
                  "bitrate": 450000,
                  "codec": "h264",
                  "codec_options": { "level": "3", "profile": "main" },
                  "framerate": "30/1",
                  "num_b_frames": 3,
                  "num_reference_frames": 4,
                  "keyframe_rate": 0.5,
                  "sample_aspect_ratio": "1:1",
                  "decoder_buffer_size": 675000,
                  "max_bitrate": 540000
                },
                {
                  "label": "hls360p",
                  "height": 360,
                  "width": 640,
                  "bitrate": 780000,
                  "codec": "h264",
                  "codec_options": { "level": "3", "profile": "main" },
                  "framerate": "30/1",
                  "num_b_frames": 3,
                  "num_reference_frames": 4,
                  "keyframe_rate": 0.5,
                  "sample_aspect_ratio": "1:1",
                  "decoder_buffer_size": 1170000,
                  "max_bitrate": 936000
                },
                {
                  "label": "hls540p",
                  "height": 540,
                  "width": 960,
                  "bitrate": 1500000,
                  "codec": "h264",
                  "codec_options": { "level": "3.2", "profile": "main" },
                  "framerate": "30/1",
                  "num_b_frames": 3,
                  "num_reference_frames": 4,
                  "keyframe_rate": 0.5,
                  "sample_aspect_ratio": "1:1",
                  "decoder_buffer_size": 2250000,
                  "max_bitrate": 1800000
                },
                {
                  "label": "hls720p",
                  "height": 720,
                  "width": 1280,
                  "bitrate": 2400000,
                  "codec": "h264",
                  "codec_options": { "level": "4", "profile": "high" },
                  "framerate": "30/1",
                  "num_b_frames": 3,
                  "num_reference_frames": 4,
                  "keyframe_rate": 0.5,
                  "sample_aspect_ratio": "1:1",
                  "decoder_buffer_size": 3600000,
                  "max_bitrate": 2880000
                },
                {
                  "label": "hls1080p",
                  "height": 1080,
                  "width": 1920,
                  "bitrate": 4500000,
                  "codec": "h264",
                  "codec_options": { "level": "4.2", "profile": "high" },
                  "framerate": "30/1",
                  "num_b_frames": 3,
                  "num_reference_frames": 4,
                  "keyframe_rate": 0.5,
                  "sample_aspect_ratio": "1:1",
                  "decoder_buffer_size": 6750000,
                  "max_bitrate": 5400000
                }
              ],
              "audio": [
                {
                  "label": "aac1",
                  "input_selector_name": "default",
                  "language_code": "eng",
                  "codec": "aac",
                  "bitrate": 128000,
                  "sample_rate": 48000
                }
              ],
              "rtmp": [
                {
                  "label": "primary_rtmp",
                  "url": "rtmp://primary.example.com/live/stream_key_1",
                  "video_label": "hls1080p",
                  "audio_label": "aac1"
                },
                {
                  "label": "backup_rtmp",
                  "url": "rtmps://backup.example.com/live/stream_key_2",
                  "video_label": "hls720p",
                  "audio_label": "aac1"
                }
              ]
            },
            "manifest": {
              "name": "playlist",
              "segment_duration_seconds": 6,
              "playlist_window_seconds": 30,
              "hls": {}
            },
            "maintenance_preferences": {
              "day": "WEDNESDAY",
              "start_time": "02:00"
            },
            "playback_rights_id": "primary"
          }
                

Live API を使用して既存チャンネルに RTMP 出力を追加する

Live API を使用して、既存の Brightcove Live チャンネルに RTMP(または RTMPS)出力を追加することもできます。 これを実行できるのは、チャンネルが OFF 状態のときだけです。

  • 既存チャンネルに RTMP 出力を追加するには、outputs オブジェクトに rtmp 配列を追加し、次の URL に PUT リクエストを送信します。

                  
          https://api.live.brightcove.com/v2/accounts/{account_id}/jobs/{job_id}
                  
                

    rtmp 配列の例:

                  "rtmp": [
            {
              "label": "primary_rtmp",
              "url": "rtmp://primary.example.com/live/stream_key_1",
              "video_label": "hls1080p",
              "audio_label": "aac1"
            },
            {
              "label": "backup_rtmp",
              "url": "rtmps://backup.example.com/live/stream_key_2",
              "video_label": "hls1080p",
              "audio_label": "aac1"
            }
          ]
                

    チャンネル作成時に使用した元のジョブ定義を取得するには、次の URL に GET リクエストを送信します。

                  
          https://api.live.brightcove.com/v2/accounts/{account_id}/jobs/{job_id}
                  
                

    これにより、既存の outputs オブジェクトを含むジョブ設定全体が返されます。 その設定に RTMP 出力を追加し、PUT で再送信することができます。

課金