AWS Elemental MediaConnectでNDI入出力を試してみた

AWS Elemental MediaConnectでNDI入出力を試してみた

MediaConnectでNDI OutputならびにNDI Sourceを使ってみます。動作に必要なNDI Discovery Serverは各Flowに設定したVPC interfaceと同じネットワーク内にEC2 Windowsで構築しました。
2026.01.31

はじめに

清水です。高品質で信頼性と安全性に優れたライブ動画伝送サービスであるAWS Elemental MediaConnectでNDIを使った入出力を試してみました。

MediaConnectでは、2025年3月24日のアップデートでNDI出力(NDI Output)をサポートしました。以下がWhat's New at AWSのポストです。

また現段階でWhat's New at AWSへのポストはありませんが、NDI入力(NDI Source)に対応したことがAWS Elemental MediaConnect User Guideなどから確認できます。

nd01
引用元: Document history for user guide - AWS Elemental MediaConnect

外部サイトとなりますがAWS API Changesの情報からも、このアップデートについて確認できますね。2026/01/28付けのアップデートでした。

Changes This release adds support for NDI flow sources in AWS Elemental MediaConnect. You can now send content to your MediaConnect transport streams directly from your NDI environment using the new NDI source type. Also adds support for LARGE 4X flow size, which can be used when creating CDI JPEG-XS flows.

本エントリではこれらMediaConnectのNDI SourceならびにNDI Outputを実際に使ってみました。具体的な構成として2つのMediaConnect Flowリソースを作成しました。1つ目のMediaConnect FlowではNDI typeのOutputを設定します。2つめのMediaConnect FlowではSource typeをNDIに設定、1つ目のMediaConnect FlowのOutputと映像入力ソースとしました。

nd20

MediaConnectでNDIを利用する際はMediaConnect Flowに関連付けたVPC interface(ENI)と同じVPC上にNDI Discovery Serverが必要です。今回はこのNDI Discovery ServerをEC2 Windows上に準備しました。また1つ目のMediaConnect FlowにはSRT ListenerなSourceを設定し、OBS StudioからSRTプロトコルを使用して映像入力を行いました。2つ目のMediaConnect FlowにはSRT ListenerなOutputを作成し、VLC media playerを使って映像を視聴しました。

AWS Elemental MediaConnectでNDIを使うための事前準備

まずはMediaConnectでNDIを使うための事前準備として、VPCとSubnet、Security Groupを作成します。MediaConnectのVPC interface(ENI)とNDI Discovery Serverが稼働するEC2はこのVPC、Subnet上に配置します。またMediaConnectにアタッチするIAMロールについても作成します。以下、作成にあたっての要点のみをまとめます。

VPCの作成

以下のVPCならびにSubnetを準備しました。

  • VPC CIDR: 10.100.0.0/16
  • Internet Gatewayをアタッチ
  • Public Subnetを1つ準備
    • Subnet CIDR: 10.100.101.0/24
    • Internet Gatewayへの経路を設定

Security Groupの作成

上記VPCで利用できる、以下の条件のSecurity Groupを作成しました。

  • Inbound ruleとして、自身のSecurity Groupからのすべての通信(All traffic)を許可
  • Outbound ruleはデフォルト(すべての通信を許可)

これは、以下User Guideの前提条件(Prerequisites)、Security Groupに関する記載(自己参照self-referencingを利用)を元にしています。All trafficではなくポートなど制限はできるかと思いますが、今回は動作検証を目的としているので上記で進めました。必要に応じて、ポートなど適切に制限を行いましょう。

nd02

MediaConnect用のIAMロールの作成

MediaConnectでVPC interface設定時に使用するIAMロールをあらかじめ作成しておきます。今回はVPC MediaConnect利用時に作成したIAMロールを使用しました。作成方法については以下ブログエントリの「2. VPC MediaConnect用のIAM準備」を参照ください。

設定内容について抜粋すると、以下の権限を有するIAMポリシーをアタッチしています。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "ec2:describeNetworkInterfaces",
                "ec2:describeSecurityGroups",
                "ec2:describeSubnets",
                "ec2:createNetworkInterface",
                "ec2:createNetworkInterfacePermission",
                "ec2:deleteNetworkInterface",
                "ec2:deleteNetworkInterfacePermission"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
} 

またIAMロールの信頼関係として以下を設定しています。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "mediaconnect.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                }
            }
        }
    ]
}

EC2 WindowsインスタンスでNDI Discovery Serverを構築

MediaConnectでNDIを利用する場合、VPC内に少なくとも1つのNDI Discovery Server(NDI検出サーバ)が必要です。以下User Guideの「How NDI sources work」に記載がありますね。

今回の検証では、EC2上のWindowsインスタンスを利用してNDI Discovery Serverとしました。

まずはEC2 Windowsインスタンスを起動します。日本語版Windows Server 2025のAMIを選択、先ほど準備したVPCならびにSubnetを指定します。インスタンスタイプはm8i.xlarge、EBSストレージは50GiBとしました。(インスタンスタイプは大きすぎず小さすぎず、ぐらいで決めました。動作自体はしますが最適化はしていません。ストレージについてはデフォルトの30GiBだと空き容量が少し心もとなく追加しました。)Security GroupはRDP用にポートを許可したもののほか、先ほど作成した自己参照型のSecurity Gropu(MediaConnectNDISecurityGroup)もアタッチしておきます。

EC2を起動してRDPで接続、以下NDIのサイトからNDI Toolsをダウンロードしてインストールします。

インストール後、エクスプローラでC:\Program Files\NDI\NDI 6 Tools\Discovery Serviceを開き、 NDI Discovery Service.exeを実行します。

ターミナルが開き、Listening状態であることが確認できます。ポートは5959を使用していますね。

NDI Discovery Service v6.3.0.3
Copyright (C) 2023-2026 Vizrt NDI AB. All rights reserved.

    0:00:00 : Running server on port: 5959
    0:00:05 : Listening... [*-------------------------------]
    0:00:10 : Listening... [ *------------------------------]
    0:00:15 : Listening... [  *-----------------------------]
    0:00:20 : Listening... [   *----------------------------]
    0:00:25 : Listening... [    *---------------------------]
    0:00:30 : Listening... [     *--------------------------]
    0:00:35 : Listening... [      *-------------------------]
    0:00:40 : Listening... [       *------------------------]
    0:00:45 : Listening... [        *-----------------------]
    0:00:50 : Listening... [         *----------------------]
    0:00:55 : Listening... [          *---------------------]
    0:01:00 : Listening... [           *--------------------]
    0:01:05 : Listening... [            *-------------------]

nd03

またNDI Discoveryのアプリケーションも起動しておきました。(スタート > NDI 6 Tools > Discovery)

nd04

MediaConnectでNDI OutputなFlowを作成

続いて、MediaConnectでNDI Outputを持つFlowを作成します。MediaConnectのマネジメントコンソール、Flow一覧画面から(Create flow)ボタンで進みます。Nameを適切に設定、Availability ZoneはAny (defautl)のまま進めました。Flow sizeではデフォルトのMediumではなくLarge以上を選択することで後続のNDI configurationの項目が出現、 NDIが利用可能となります。今回はLargeを選択しました。

nd05

Sourceの項目です。OutputでNDIを使用するFlowなので、ここではStandard sourceを選択します。Flow source nameを適切に設定し、ProtocolはSRT listenerを選択しました。Allowlist CIDR blockを適切に設定、Inbound portは5079を指定しています。Decryptionは設定せずに進めました。

nd06

続いてVPC interfacesの設定です。(Add VPC interface)ボタンを押下すると設定項目が現れます。Nameを適切に設定、TypeはデフォルトのENAのまま進めました。Role ARNでは先ほど準備したIAMロールを設定します。VPCとSubnetについても先ほど準備したものを指定しますが、Nameタグの情報が表示されない点に注意しましょう。CIDRを参考にしつつ、最終的にはIDで確認して選択します。Security Groupについても先ほど準備した自己参照型のSecurity Groupを設定します。

nd21

NDI configurationの項目では、Flow NDI supportをデフォルトのDisalbedからEnableに変更します。NDI machine nameを適切に設定、Discovery serversの項目では(Add discovery server)ボタンを押下して設定項目を出現させます。出現したDiscovery servere addressの項目にはNDI Discovery Serverの稼働するEC2 WindowsのプライベートIPアドレスを指定します。今回はプライベートIPアドレスが10.100.101.8でした。ポートについては指定しなければデフォルトの5959が設定されます。さきほどNDI Discovery Service.exeを実行した際、ポート5959で動作していることを確認できているので、今回はポートの指定をせずに進めました。VPC interface adapterの項目は、一つ上のVPC interfaceで設定したものが現れるので選択します。

nd22

マネジメントコンソールでの確認をしやすくするためSource monitoring configurationのthumbnails stateをEnableに設定し、(Create flow)を押下してFlowを作成します。

nd23

Flow作成後、Outputsの項目に進み(Add output)ボタンからOutputをを作成します。Nameを適切に設定、Flow output typeではNDIを選択します。NDI configrationのNDI program namemoも適切に設定しておきましょう。

nd09

nd24

Output作成後、MediaConnect FlowをStartさせます。FlowがActive状態になったタイミングでNDI Discovery Serverを確認すると、以下のようにAdded Source : EMX-NDIOUTPUTFLOW (EMX-NDIOutputFlow-Output)という出力が確認できます。なおこの段階では、まだMediaConnectへの映像入力は行っていません。

    0:03:42 : Listening... [-----------*                    ]
    0:03:47 : Listening... [------------*                   ]
    0:03:49 : Added Source : EMX-NDIOUTPUTFLOW (EMX-NDIOutputFlow-Output)
    0:03:49 : Num sources (legacy) : 1
    0:03:54 : Listening... [-------------*                  ]
    0:03:59 : Listening... [--------------*                 ]

NDI Discoveryのアプリケーション上でも、Sendersが登録されていることが確認できます。

nd30

ここで表示されているEMX-NDIOUTPUTFLOWEXM-NDIIutputFlow-Outputについては、MediaConnectのNDI Output Flowを作成した際に、NDI machine nameならびにNDI program nameとして設定したものですね。またIPアドレス10.100.101.154については、VPC interfaceのプライベートIPアドレスと一致します。MediaConnectのマネジメントコンソールで確認できるNetwork interface ID(以下のeni-0545cxxxxxxxxxxxx)をEC2マネジメントコンソールのNetwork interfaces一覧で検索するとプライベートIPアドレスが確認できます。

nd31

nd32

なお、MediaConnectへの映像入力を開始しても、これらNDI Discovery ServerやNDI Discoveryの表示は変わりませんでした。

MediaConnectでNDI SourceなFlowを作成

NDI OutputなMediaConnect Flowを作成、FlowをActive状態にすることでNDI Discovery Server側で認識されることが確認できました。

続いて、MediaConnectでNDI SourceなFlowを作成します。NDI OutputなFlowと同様、MediaConnectのFlow一覧画面から(Create flow)ボタンで進みます。適切なNameを設定してFlow sizeでLargeを選択、Sourceは`NDI sourceを選択します。Flow source nameにも適切な値を設定しますが、NDI source nameはこの段階では空欄としました。のちほど設定します。

nd11

VPC interfaeceとNDI configurationについてはNDI OutputなFlowと同様の設定を行っていきます。まずはVPC interfaces、(Add VPC interface)ボタンを押下して設定項目を出現させ、Nameを適切に設定します。TypeはデフォルトのENAとし、Role ARNで先ほど準備したIAMロールを指定します。VPC、Subnetについても準備しておいたリソースを、ID表示に気をつけながら設定しましょう。Security Groupも同様に、先ほど準備した自己参照型のSecurity Groupを指定します。

nd25

NDI configurationについて、Flow NDI supportがデフォルトでEenabledとなっていたのでこのEnabledのまま進めました。(Disabledの場合はEnabledに変更しましょう。)NDI machine nameを適切に設定し、Discovery serversの項目で(Add discovery server)ボタンを押下して設定項目を出現させます。Discovery server addressでNDI Discovery Serverの稼働するEC2 WindowsのプライベートIPアドレス、今回であれば10.100.101.8を入力し、VPC interface adapterで上記VPC interfaceの項目で設定したものを選択します。

nd26

続くEncoding configurationはデフォルトのまま進めました。また、NDI SourceなFlowでも動作確認をしやすくするためThubnmails stateをEnalbedに設定、(Create flow)ボタン押下でFlowを作成します。

nd27

Flow作成後、Outputsの項目の(Add output)ボタンを押下してOutputを作成します。Nameを適切に設定、Flow output typeはStandardを選択しました。Use VPC interfaceの設定は有効にせず、VPCの外への出力とします。Protocol configurationではProtocolとしてSRT Listenerを選択、Portは5080としました。(add new CIDR block)ボタンを押下してAllowd CIDRsの設定箇所を出現させ、許可対象のIPアドレス(CIDR)を入力します。Encryptionは設定していません。(Add flow output)ボタンを押下してOutputを作成します。

nd28

nd29

Outputの作成まで完了したら、FlowをStartさせます。Active状態になると、NDI Discovery ServerにNum of source (legacy) listeners : 2という出力がありました。

    0:17:26 : Listening... [               *----------------]
    0:17:31 : Listening... [                *---------------]
    0:17:36 : Listening... [                 *--------------]
    0:17:36 : Num of source (legacy) listeners : 2
    0:17:42 : Listening... [                  *-------------]
    0:17:47 : Listening... [                   *------------]
    0:17:52 : Listening... [                    *-----------]

この状態で、MediaConnect FlowのSourceの内容をUpdateします。Sourceの項目、UpdateはSource healthがDisconnectedとなっていますね。(Update)ボタンを押下してUpdate sourceのダイアログを表示させます。

nd33

NDI source nameの項目をクリックすると、先ほどNDI Discoverアプリケーションで確認したものと同様の名称が見つかります。NDI Outputを持つMediaConnect FlowのNDI machine nameならびにNDI program nameですね。これを選択して(Update source)ボタンを押下しましょう。

nd34

SourceをUpdateすると、NDI Discovery Server上では以下のようにNum of source (legacy) listenersの出力が3回ありました。

    0:22:17 : Listening... [         *----------------------]
    0:22:22 : Listening... [          *---------------------]
    0:22:27 : Num of source (legacy) listeners : 1
    0:22:27 : Num of source (legacy) listeners : 2
    0:22:27 : Num of source (legacy) listeners : 3
    0:22:32 : Listening... [           *--------------------]
    0:22:37 : Listening... [            *-------------------]

またMediaConnectのマネジメントコンソール上では、SourceのSource healthがConnectedに変わります。また、Previewには真っ白ですがサムネイル画像が表示されています。

nd35

NDI OutputなMediaConnect Flowにはまだ映像は入力していませんが、NDI OutputからNDI SourceなMediaConnect Flowに対して、映像(ホワイトスクリーン)が送信されているようです。(MediaConnect User Guideに記載のある"White screen generation for NDI outputs"がこちらの挙動に該当しそうですね。)

MediaConnectに映像を入力して視聴確認

NDI OutputなMediaConnect Flow、ならびにNDI SourceなMediaConnect Flowのそれぞれが作成でき、Active状態になりました。NDI OutputからNDI Sourceまで映像はNDIで流れていそうです。実際にNDI OutputなMediaConnect FlowにSRTで映像を送信、NDI SourceなMediaConnect FlowのOutputで映像が視聴できるか確認してみましょう。

構成図について再掲します。

nd20

NDI OutputなMediaConnect Flowへの映像送信にはOBS Studioを使用します。送信する映像にはBig Buck Bunnyを使用しました。

OBS Studioの配信先サーバにsrt://[MediaConnect SourdeのInbound IP address]:[Port]を指定します。今回であればsrt://54.XXX.XXX.237:5079ですね。

nd36

OBS Studioで配信を開始します。

nd37

NDI OutputなMediaConnect Flow、ならびにNDI SourceなMediaConnect FlowそれぞれのPrevewを確認、映像が伝送されていますね。(なお、NDIでの伝送を行うことで、Timecodeが埋め込まれているようです、興味深いですね。)

nd38

nd39

最後にVLC media playerでの確認です。srt://[MediaConnect SourdeのInbound IP address]:[Port]のフォーマットでURLを指定してネットワークリソースを開きます。今回であればsrt://54.XXX.XXX.34:5080となります。

nd40

NDIでMediaConnectの2つのFlowを経由した映像が視聴できていますね。

nd42

まとめ

AWS Elemental MediaConnectでNDI Outputを持つFlow、ならびにNDI Sourceを持つFlowを作成、NDI Outputを持つFlowにOBS StudioからSRTで入力した映像が2つのFlowを経由し映像が伝送されている、NDI Sourceを持つFlowのOutputから確認しました。

MediaConnectでNDIの利用にはNDI Discovery Serverが必要である点に注意しましょう。今回はこのNDI Discovery ServerをEC2 Windows上に準備して検証を行いました。動作検証のため冗長性などを考慮せず1台で確認を行いましたが、実際の運用では冗長構成が取れるかもポイントですね。実際にMediaConnectの設定としては3台のNDI Discovery Serverの指定が可能です。また、AWS Solution LibraryにはこのNDI Discovery Serverの本格導入に向けたアーキテクチャと、CloudFormatinテンプレートが準備されています。

MediaConnectでNDIを活用する場合、本番導入に向けては上記AWS Solution Libraryを上手に活用していきたいですね。機会があればこのAWS Solution Libraryについても検証してみたいと思います。

この記事をシェアする

FacebookHatena blogX

関連記事