NextGen Liveでの RTMP 利用

RTMP を使用して、NextGen Live から Facebook や YouTube などの配信先へライブイベントをストリーミングする方法について学びます。

概要

general-block-diagram
ブロック図

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

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

  1. 新しいチャンネルを作成する際に、下にスクロールして RTMP 出力セクションを表示します。
  2. 出力 URL を入力し、レンディションを選択します。

  3. RTMP 出力を追加をクリックします。

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

NextGen Live では、既に作成されたチャンネルに RTMP 出力を追加できます。
方法は、対象のチャンネルを選択し、下にスクロールして RTMP 出力セクションを表示します。

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 出力の設定

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

  • RTMP 出力付きライブジョブを作成する には、次の 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 出力の追加

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

  • 既存チャンネルに RTMP 出力を追加するには、 outputs オブジェクトに rtmp 配列を追加し、 次の 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"
      }
    ]
          

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

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

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

課金