目次

AWS Elemental MediaConnect v2.0 完全ガイド 2026

概要と課題

AWS Elemental MediaConnect は、放送品質のライブビデオトランスポートサービス です。会場・スタジオ・データセンター間で高品質な動画ストリームを安全・信頼性高く転送します。SMPTE 2022-7・ZIXI・RTP・SRT・Fujitsu CDI など放送業界標準プロトコルをサポートし、従来の衛星回線・専用回線の IP ネットワーク上での実現を可能にします。MediaConnect → MediaLive → MediaPackage が放送グレードライブ配信スタックの最上流であり、会場映像の安全な長距離転送を担当します。

MediaConnect が解決する課題

衛星回線・専用回線の高コスト

  • 従来:スタジアム → 放送局間に衛星回線・専用回線が必須(月額 $10,000~$50,000)
  • MediaConnect:IP ネットワーク(パブリック・プライベート)で代替、大幅コスト削減

放送品質の信頼性確保

  • インターネット経由の動画送信は帯域不安定・パケットロスで品質維持困難
  • MediaConnect:SMPTE 2022-7(デュアルネットワーク冗長化)・ZIXI・SRT で放送品質を保証

複数配信先への同時配信

  • 同一ソース映像を複数の放送局・CDN・ソーシャルメディアに同時配信
  • エンタイトルメント管理で配信権の制御

低レイテンシー転送

  • SRT(Secure Reliable Transport)で <1 秒遅延実現
  • リアルタイム双方向通信(カメラマンへの指示)を可能化

アーキテクチャ全体像

graph TB
    subgraph Sources["ビデオソース"]
        Stadium["スタジアム<br/>カメラ"]
        SNG["SNG 車<br/>衛星通信"]
        Studio["スタジオ"]
        EventVenue["会場<br/>リモートカメラ"]
    end
    
    subgraph MediaConnect["MediaConnect フロー"]
        Source["ソース管理<br/>(Input)"]
        Protocol["プロトコル選択<br/>(SRT/ZIXI/RTP)"]
        Redundancy["冗長化<br/>(SMPTE 2022-7)"]
        Entitlement["エンタイトルメント<br/>(出力先管理)"]
    end
    
    subgraph Outputs["出力"]
        MediaLive1["MediaLive<br/>(エンコード)"]
        Station["放送局"]
        CDN["CDN<br/>(配信)"]
        Social["SNS ライブ配信"]
    end
    
    subgraph Distribution["配信"]
        Broadcast["地上波<br/>放送"]
        OTT["OTT<br/>ストリーミング"]
        Social2["Facebook/YouTube"]
    end
    
    Sources -->|RTMP/RTP/SRT| MediaConnect
    Source -->|入力管理| Protocol
    Protocol -->|送信プロトコル| Redundancy
    Redundancy -->|冗長性確保| Entitlement
    Entitlement -->|出力先制御| Outputs
    MediaLive1 -->|HLS/DASH| OTT
    Station -->|放送| Broadcast
    CDN -->|キャッシュ| OTT
    Social -->|RTMP Push| Social2

プロトコル比較

graph TB
    subgraph Protocols["転送プロトコル"]
        SRT["SRT<br/>(Secure Reliable)<br/>• <1 秒遅延<br/>• パケット復旧<br/>• 暗号化<br/>• オープンソース"]
        ZIXI["ZIXI<br/>• <2 秒遅延<br/>• パテント技術<br/>• 信頼性優先<br/>• ライセンス要"]
        RTP["RTP/FEC<br/>• 標準プロトコル<br/>• Forward Error Correction<br/>• オーバーヘッド大<br/>• 遅延制御"]
        SMPTE2022["SMPTE 2022-7<br/>• デュアル回線<br/>• 放送標準<br/>• ハードウェア対応<br/>• 高コスト"]
    end
    
    select["最適な選択"]
    SRT -->|低遅延・コスト| select
    ZIXI -->|信頼性重視| select
    RTP -->|標準準拠| select
    SMPTE2022 -->|冗長化| select

コアコンポーネント詳説

1. Flow(フロー)

ビデオストリームを一方向または双方向で転送する単位。

フロー設定

  • ソース(Source):入力 IP・ポート・プロトコル
  • 出力(Output):複数配信先への同時転送
  • エンタイトルメント(Entitlement):出力先のアクセス権管理

2. Source(ソース)

ビデオ入力ポイント。複数ソースをプール化可能。

ソースタイプ

  • srt-listener:SRT で受動受信(会場から PUSH)
  • srt-caller:SRT で能動接続(MediaConnect から PULL)
  • zixi-push:ZIXI プロトコル PUSH
  • rtp-multicast:RTP マルチキャスト
  • cdi:Fujitsu CDI(非圧縮高品質)

3. Output(出力)

複数配信先への同時転送。

出力先タイプ

  • MediaLive チャンネル(エンコード)
  • 他の MediaConnect フロー(リレー)
  • 放送局エンコーダー(UDP TS / RTP)
  • CDN(RTMP Push)

4. Entitlement(エンタイトルメント)

出力先へのアクセス権を管理。配信権の商用化に対応。

エンタイトルメント設定

  • 出力先ホワイトリスト(IP CIDR)
  • 有効期限
  • 最大転送ビットレート制限

5. Reservation(リザベーション)

継続的な転送キャパシティを事前確保(オプション)。

リザベーション効果

  • 優先接続(フロー作成時の確実性)
  • 月額固定料金で Cost Predictability
  • 年間契約で最大 70% 割引

主要ユースケース 10+

1. スポーツ国際放送(複数配信先)

スタジアムからの映像を複数国の放送局に同時配信。

スタジアム → SRT → MediaConnect
    ├── 出力 1 → 日本放送協会(NHK)
    ├── 出力 2 → テレビ朝日
    ├── 出力 3 → 米国 ESPN
    └── 出力 4 → YouTube グローバル配信

2. SNG(Satellite News Gathering)の IP 代替

取材現場 → IP ネットワーク → スタジオ(衛星回線廃止)

ニュース取材現場(SNG 車)
    ↓ SRT / ZIXI(低遅延・信頼性)
MediaConnect フロー
    ↓
放送局スタジオ → 本放送出力

3. リアルタイム複数配信(Live + OTT + SNS)

1 つのライブ映像を TV・Web・SNS に同時配信。

会場カメラ → MediaConnect
    ├── TV 出力(放送局向け)
    ├── OTT 出力(MediaLive → HLS/DASH)
    └── SNS 出力(Facebook Live / YouTube)

4. 冗長ネットワーク構成(SMPTE 2022-7)

2 つの独立ネットワークで高可用性確保。

ソース(Primary: ISP A、Backup: ISP B)
    ↓ SMPTE 2022-7 デュアル冗長化
MediaConnect フロー
    ├── Primary ネットワーク接続喪失 → Backup 自動切り替え
    └── 放送中断なし

5. リアルタイムビデオ通話(双方向)

カメラマン ↔ 放送局 の双方向通信。

スタジアムカメラ → MediaConnect(往路)
    ↓ SRT(<1 秒遅延)
放送局 → MediaConnect(復路:指示・音声)
    ↓ SRT
スタジアムモニター(監督に指示表示)

6. クロスリージョン配信

AWS リージョン間のビデオ転送(内部バックボーン利用)。

  • AWS Tokyo リージョン(カメラ入力)
  • ↓ MediaConnect(内部 AWS ネットワーク)
  • AWS US-East リージョン(配信センター)
  • ↓ MediaLive → CloudFront → グローバル配信

7. 複数イベント並行中継

複数スポーツイベント・コンサートからの映像を同一プールで管理。

Event A(スタジアム) → Flow A
Event B(アリーナ) → Flow B
Event C(野外) → Flow C
    → 共有 MediaConnect インフラ
    → 各フロー独立管理・マルチキャスト出力

8. 従来オンプレから AWS への段階的移行

既存オンプレ放送基盤から AWS クラウドへ段階移行。

  • Phase 1: オンプレ入力 → MediaConnect → オンプレ出力
  • Phase 2: 一部出力を AWS MediaLive に変更
  • Phase 3: 全出力を AWS に統合

9. Ultra HD(4K)/ HDR 映像転送

ビットレート高い高品質映像の信頼性確保。

  • 4K HDR ソース(50 Mbps+)
  • → SRT / ZIXI(高ビットレート対応)
  • → Forward Error Correction で信頼性向上
  • → MediaLive → 4K DASH 配信

10. 配信権の動的制御

イベント中の配信権の追加・変更・失効を運用。

  • Entitlement マネージメント:
  • • ハーフタイム:広告目的で SNS 出力を一時停止
  • • 延長戦:追加料金払った配信先に限定配信
  • • 試合終了:アーカイブ配信を自動開始

11. 低遅延ライブ配信

<1 秒遅延で会場・視聴者が同期。

SRT プロトコル(<0.5 秒遅延)
    + MediaLive エンコード(<1 秒)
    + CDN(<0.5 秒)
    = 総遅延 <2 秒(放送品質)

12. Fujitsu CDI 連携(非圧縮伝送)

HD / 4K 非圧縮ビデオをデータセンター間で転送。

  • Fujitsu CDI エンコーダー → MediaConnect
  • → 非圧縮 2110-20(ST 2110 規格)
  • → リモートロケーション記録・処理

設定・操作の具体例

AWS CLI を使用した基本的なフロー作成

例1: SRT リスナーフロー(スタジアム → クラウド)

#!/bin/bash

# 1. Flow 作成(SRT Listener)
FLOW=$(aws mediaconnect create-flow \
  --name stadium-to-cloud-flow \
  --availability-zones ap-northeast-1a ap-northeast-1c \
  --source '{
    "Name": "srt-source",
    "Protocol": "srt-listener",
    "IngestPort": 1935,
    "MaxBitrate": 50000000,
    "WhitelistCidr": "203.0.113.0/24"
  }' \
  --query 'Flow.FlowArn' --output text)

echo "Flow created: $FLOW"

# 2. Output を MediaLive に追加
aws mediaconnect add-flow-outputs \
  --flow-arn "$FLOW" \
  --outputs '[{
    "Name": "to-medialive-primary",
    "Protocol": "rtp",
    "Destination": "10.0.1.100",
    "Port": 5000,
    "Smoothing": 300,
    "StreamId": "1"
  }]'

# 3. バックアップ出力(冗長性)
aws mediaconnect add-flow-outputs \
  --flow-arn "$FLOW" \
  --outputs '[{
    "Name": "to-medialive-backup",
    "Protocol": "rtp",
    "Destination": "10.0.2.100",
    "Port": 5001,
    "Smoothing": 300,
    "StreamId": "2"
  }]'

# 4. Flow 開始
aws mediaconnect start-flow --flow-arn "$FLOW"
echo "Flow started"

# 5. Flow の詳細確認
aws mediaconnect describe-flow --flow-arn "$FLOW"

例2: ZIXI + SMPTE 2022-7 冗長化

# ZIXI プロトコル + デュアルネットワーク冗長化
aws mediaconnect create-flow \
  --name high-reliability-flow \
  --availability-zones ap-northeast-1a ap-northeast-1c \
  --source '{
    "Name": "zixi-primary",
    "Protocol": "zixi-push",
    "IngestPort": 2088,
    "MaxBitrate": 100000000,
    "WhitelistCidr": "203.0.113.0/24"
  }' \
  --maintenance-day SUNDAY \
  --maintenance-start-hour 02

例3: Entitlement(配信権管理)

# エンタイトルメント作成(出力先アクセス権)
aws mediaconnect create-entitlement \
  --flow-arn "arn:aws:mediaconnect:ap-northeast-1:123456789012:flow/xxx" \
  --name broadcast-japan-rights \
  --entitlement '{
    "AllowedAddresses": [
      "192.0.2.0/24"
    ],
    "MaxFramerate": 60,
    "MaxBitrate": 30000000
  }' \
  --subscribers '[
    "arn:aws:mediaconnect:ap-northeast-1:999999999999:flow/xxx"
  ]'

# エンタイトルメント更新(期限設定)
aws mediaconnect update-entitlement \
  --flow-arn "arn:aws:mediaconnect:ap-northeast-1:123456789012:flow/xxx" \
  --entitlement-arn "arn:aws:mediaconnect:ap-northeast-1:123456789012:entitlement/xxx" \
  --entitlement '{
    "AllowedAddresses": [
      "192.0.2.0/24"
    ],
    "MaxFramerate": 60,
    "MaxBitrate": 30000000
  }'

Python SDK による動的フロー管理

import boto3
import json

class MediaConnectManager:
    def __init__(self, region='ap-northeast-1'):
        self.client = boto3.client('mediaconnect', region_name=region)
    
    def create_srt_listener_flow(self, flow_name, ingest_port, source_cidr, 
                                 max_bitrate=50000000):
        """SRT Listener フロー作成(会場 → クラウド)"""
        response = self.client.create_flow(
            Name=flow_name,
            AvailabilityZones=['ap-northeast-1a', 'ap-northeast-1c'],
            Source={
                'Name': 'srt-listener-source',
                'Protocol': 'srt-listener',
                'IngestPort': ingest_port,
                'MaxBitrate': max_bitrate,
                'WhitelistCidr': source_cidr
            }
        )
        return response['Flow']['FlowArn']
    
    def add_output(self, flow_arn, output_name, protocol, destination, 
                   port, stream_id=None, smoothing=300):
        """出力先を追加"""
        output_config = {
            'Name': output_name,
            'Protocol': protocol,
            'Destination': destination,
            'Port': port,
            'Smoothing': smoothing
        }
        
        if stream_id:
            output_config['StreamId'] = str(stream_id)
        
        response = self.client.add_flow_outputs(
            FlowArn=flow_arn,
            Outputs=[output_config]
        )
        return response['Outputs']
    
    def create_entitlement(self, flow_arn, entitlement_name, 
                          allowed_addresses, max_bitrate=None, 
                          max_framerate=None):
        """エンタイトルメント(出力アクセス権)作成"""
        entitlement_config = {
            'AllowedAddresses': allowed_addresses
        }
        
        if max_bitrate:
            entitlement_config['MaxBitrate'] = max_bitrate
        if max_framerate:
            entitlement_config['MaxFramerate'] = max_framerate
        
        response = self.client.create_entitlement(
            FlowArn=flow_arn,
            Name=entitlement_name,
            Entitlement=entitlement_config,
            Subscribers=[]
        )
        return response['Entitlement']
    
    def start_flow(self, flow_arn):
        """フロー開始"""
        self.client.start_flow(FlowArn=flow_arn)
        print(f"Flow {flow_arn} started")
    
    def stop_flow(self, flow_arn):
        """フロー停止"""
        self.client.stop_flow(FlowArn=flow_arn)
        print(f"Flow {flow_arn} stopped")
    
    def describe_flow(self, flow_arn):
        """フロー詳細確認"""
        response = self.client.describe_flow(FlowArn=flow_arn)
        return response['Flow']
    
    def set_source_backup(self, flow_arn, backup_ingest_port, backup_cidr):
        """バックアップソース設定(冗長化)"""
        response = self.client.add_flow_sources(
            FlowArn=flow_arn,
            Sources=[{
                'Name': 'srt-backup-source',
                'Protocol': 'srt-listener',
                'IngestPort': backup_ingest_port,
                'MaxBitrate': 50000000,
                'WhitelistCidr': backup_cidr
            }]
        )
        return response['Sources']

# 使用例
if __name__ == '__main__':
    manager = MediaConnectManager()
    
    # SRT Listener フロー作成
    flow_arn = manager.create_srt_listener_flow(
        flow_name='stadium-to-cloud',
        ingest_port=1935,
        source_cidr='203.0.113.0/24',
        max_bitrate=50000000
    )
    print(f"Flow ARN: {flow_arn}")
    
    # Primary 出力(MediaLive)
    manager.add_output(
        flow_arn=flow_arn,
        output_name='to-medialive-primary',
        protocol='rtp',
        destination='10.0.1.100',
        port=5000,
        stream_id=1
    )
    
    # Backup 出力(冗長化)
    manager.add_output(
        flow_arn=flow_arn,
        output_name='to-medialive-backup',
        protocol='rtp',
        destination='10.0.2.100',
        port=5001,
        stream_id=2
    )
    
    # エンタイトルメント設定(配信権)
    manager.create_entitlement(
        flow_arn=flow_arn,
        entitlement_name='broadcast-japan',
        allowed_addresses=['192.0.2.0/24'],
        max_bitrate=30000000,
        max_framerate=60
    )
    
    # フロー開始
    manager.start_flow(flow_arn)
    
    # フロー確認
    flow = manager.describe_flow(flow_arn)
    print(json.dumps(flow, indent=2, default=str))

CloudFormation による IaC

AWSTemplateFormatVersion: '2010-09-09'
Description: 'MediaConnect Flow with Redundancy'

Resources:
  MediaConnectRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service: mediaconnect.amazonaws.com
            Action: 'sts:AssumeRole'

  SrtFlow:
    Type: AWS::MediaConnect::Flow
    Properties:
      Name: stadium-to-cloud-flow
      Source:
        Name: srt-listener
        Protocol: srt-listener
        IngestPort: 1935
        MaxBitrate: 50000000
        WhitelistCidr: 203.0.113.0/24
      AvailabilityZones:
        - ap-northeast-1a
        - ap-northeast-1c

  PrimaryOutput:
    Type: AWS::MediaConnect::FlowOutput
    Properties:
      FlowArn: !GetAtt SrtFlow.FlowArn
      Name: to-medialive-primary
      Protocol: rtp
      Destination: 10.0.1.100
      Port: 5000
      Smoothing: 300

  BackupOutput:
    Type: AWS::MediaConnect::FlowOutput
    Properties:
      FlowArn: !GetAtt SrtFlow.FlowArn
      Name: to-medialive-backup
      Protocol: rtp
      Destination: 10.0.2.100
      Port: 5001
      Smoothing: 300

  JapanEntitlement:
    Type: AWS::MediaConnect::FlowEntitlement
    Properties:
      FlowArn: !GetAtt SrtFlow.FlowArn
      Name: broadcast-japan
      Entitlement:
        AllowedAddresses:
          - 192.0.2.0/24
        MaxBitrate: 30000000
        MaxFramerate: 60

Outputs:
  FlowArn:
    Value: !GetAtt SrtFlow.FlowArn
  SourceIp:
    Value: !GetAtt SrtFlow.EgressIp
  IngestPort:
    Value: 1935

類似サービス比較表

項目 MediaConnect Zixi Haivision SRT Net Insight Evertz
提供形態 AWS マネージド SaaS オープンソース / SaaS ハードウェア ハードウェア
SRT 対応 ✅✅
ZIXI 対応 ✅✅
SMPTE 2022-7 限定的
低遅延(<1s) ✅(SRT) ✅✅
エンタイトルメント 限定的
AWS 統合 ネイティブ API API API API
初期コスト 0 サブスク OSS 無料 高額 高額
スケーラビリティ 無制限 無制限 無制限 容量固定 容量固定

ベストプラクティス

✅ 推奨事項

  1. 冗長ネットワーク構成

    • SMPTE 2022-7(2 回線)または複数ソース設定
    • Primary 障害時に Backup への自動フェイルオーバー
  2. SRT プロトコル優先

    • 低遅延(<1 秒)
    • パケット復旧機能
    • オープンソース・標準化
    • ライセンス不要
  3. エンタイトルメントで配信権管理

    • 出力先ごとにアクセス権を明確化
    • 地域・配信権の商用化に対応
  4. 複数出力先の並行管理

    • 1 フロー = 複数出力先(TV・CDN・SNS)
    • 効率的な配信インフラ
  5. CloudFormation / CDK で IaC 管理

    • フロー定義をコード化
    • 本番環境・ステージング環境の一貫性
  6. ホワイトリスト CIDR の厳格設定

    • 送信元 IP を限定
    • 不正アクセス防止

❌ 回避すべき事項

  1. 単一ネットワーク・単一出力

    • 障害時全停止
    • SMPTE 2022-7 または複数ソース必須
  2. 低遅延プロトコル無視

    • ZIXI 偏重(ライセンス・相互運用性)
    • SRT の活用を検討
  3. エンタイトルメント未設定

    • 配信権の制御不可
    • 不正配信(海賊行為)防止困難
  4. 大規模イベントで単一フロー

    • 冗長性なし
    • MediaConnect → MediaLive の複数パスを検討
  5. 従来衛星回線との並行保有

    • コスト二重払い
    • MediaConnect で段階的置き換え
  6. バックアップ計画なし

    • フロー障害時の対応策なし
    • 事前に別フロー・回線を準備

トラブルシューティング表

症状 原因 対策
ソース接続失敗 CIDR ホワイトリスト設定ミス / IP 変更 WhitelistCidr 再確認・送信元 IP 確認
パケットロス・フレームドロップ ネットワーク不安定 / ビットレート超過 SRT FEC 設定 / ビットレート見直し
出力先未到達 Destination IP・Port 不正 / セキュリティグループ Output 設定確認・ネットワーク経路確認
遅延が大きい プロトコル選択(ZIXI)/ バッファリング SRT に変更 / Smoothing パラメータ調整
エンタイトルメント権限エラー Subscriber ARN 不正 Entitlement 設定再確認・権限委譲確認
SMPTE 2022-7 フェイルオーバーしない バックアップソース未設定 / ヘルスチェック失敗 バックアップソース追加 / ネットワーク確認
Flow 開始できない IAM 権限不足 / リソース上限 IAM Role 確認・リージョン 2 への分散検討
CloudFormation デプロイ失敗 JSON 形式エラー / 参照 ARN 不正 テンプレート検証・参照値確認

2025-2026 最新動向

新機能・アップデート

  1. SRT Advanced(SRT v1.5+)

    • SRT-FEC(Forward Error Correction)強化
    • <100ms 遅延実現(従来 <300ms)
  2. ST 2110-20 標準化対応

    • IP ベース放送フォーマット完全対応
    • Fujitsu CDI との完全互換
  3. 機械学習ベースの自動最適化

    • ネットワーク状態に応じた自動パラメータ調整
    • FEC・ビットレート自動最適化
  4. マルチリージョン フェイルオーバー

    • AWS リージョン間での自動切り替え
    • グローバル可用性向上
  5. ネイティブ暗号化強化

    • DTLS 1.3 によるセキュアな転送
    • エンドツーエンド暗号化
  6. REST API v2 完全化

    • OpenAPI 準拠
    • 複数 SDK(Go・Rust 等)対応

学習リソース・参考文献

公式ドキュメント

オープンソース・標準

ベンダー・競合サービス比較


実装チェックリスト

  • [ ] MediaConnect IAM Role 作成
  • [ ] SRT Listener / Caller フロー設計決定
  • [ ] CIDR ホワイトリスト設定(送信元 IP)
  • [ ] Primary / Backup ネットワーク構成(SMPTE 2022-7 検討)
  • [ ] 出力先(MediaLive・放送局・CDN)設定
  • [ ] エンタイトルメント(配信権)設定
  • [ ] SRT FEC / Smoothing パラメータ調整
  • [ ] Reservation(リザベーション)検討(月額コスト最適化)
  • [ ] CloudFormation / CDK で IaC 管理
  • [ ] テスト配信で遅延・品質確認(スタジアムシミュレーション)
  • [ ] フェイルオーバー動作確認(バックアップ切り替え)
  • [ ] CloudWatch メトリクス・ログ監視設定
  • [ ] 本番環境セキュリティ監査(CIDR・TLS)

まとめ

AWS Elemental MediaConnect は、放送品質のライブビデオトランスポートサービス です。SRT・ZIXI・RTP・SMPTE 2022-7 など複数プロトコルをサポートし、会場・スタジオ・データセンター間で高品質・低遅延・信頼性の高いビデオ転送を実現します。複数配信先への同時配信・エンタイトルメント管理・冗長ネットワーク対応により、放送グレードのライブ配信インフラの第一層を担当します。従来の衛星回線・専用回線の IP ネットワーク上での実現で大幅なコスト削減と運用柔軟性を実現します。

活用シーン:国際スポーツ放送・ニュース速報・イベント中継・複数配信先運用・SNG(衛星ニュース配信)の IP 代替

最大のメリット:放送品質の信頼性を保ちながら、衛星回線・専用回線コストを IP ネットワークで削減

次ステップ:MediaConnect → MediaLive → MediaPackage → CloudFront でエンドツーエンドのライブ配信基盤構築


最終更新:2026-04-26 バージョン:v2.0