Genvid SDK 1.24.0

Genvid SDK 1.24.0 へようこそ。このリリースでは、安定した状態で統合を行うことができ、ローカルでの開発や、限定したクラウドでのデプロイに使用することができます。プロダクションを完全にデプロイするための一部の機能はまだ実装されていませんが、他のソフトウェアによって提供可能です。プロダクションのデプロイを予定している場合は、support@genvidtech.com にお問い合わせください。

私たちは、快適な製品展開のためにすべての機能を完成させるまで、定期的にリリースを行うことをお約束します。私たちは常に、リリース間のスムーズなアップグレードを保証し、可能な限りの後方互換性サポートを提供するよう努力しています。既知の問題と回避策の完全なリストは、弊社の Forum に掲載されています。何か問題がありましたら、ご連絡ください。

現在ご利用になれる機能

現在の機能の概要を紹介します。本リリースの新機能一覧は以下の 主な修正と変更 を参照してください。

  • Windows C++ API、C# ラッパー。
  • D3D11 または未処理フレームのビデオキャプチャ。
  • WASAPI オーディオキャプチャ。
  • ビデオエンコード (H264 + AAC)。
  • YouTube へのライブ動画配信。
  • 複数のインスタンスからの、複数の動画およびデータのストリーミング。
  • 任意の追加ゲームイベントおよび通知のライブ配信。
  • スケーラブル イベント メッセージ システム。
  • 埋め込み型 Web ページ用 Javascript SDK。
  • ビデオとゲームデータストリームの自動同期。
  • オーディオ/ビデオおよびデータの複数のソース (ベータ版)。
  • ライブ動画編集と基本コンポジション効果 (ベータ版)。
  • RTMP Ingest サーバー (ベータ版)。
  • Unity3D 統合 (ゲームと管理)。
  • Unreal Engine 統合 (ゲームと管理)。
  • サービス制御用 REST API (ベータ版)。
  • ローカル、リモートクラスタの管理用ツール、スクリプト。AWS 用サンプルスクリプト。
  • メトリクス フィード (ベータ版)。
  • 負荷テスト用ライブラリ。
  • 詳細な解説書。
  • 複数の統合サンプル。

主な修正と変更

クラウド デプロイ - Azure

クラウド環境を作成する際に、ベースイメージをより迅速にインポートできるように、genvid-azure-image コマンドを追加して Azure デプロイのサポートを改善しました。

サーバーイメージの Linux ディストリビューションを Ubuntu 16.04 から Debian 10 に変更し、AWS サーバーイメージのディストリビューションファミリに合わせて、新しいものにしてパフォーマンスを向上させました。

クラウド デプロイ - AWS

AWS クラスタのデプロイのための G4 マシンと Windows 2019 のサポートを追加しました。

これにより、デプロイ先のアベイラビリティゾーン (AZ) に対応するサブネットを定義することができるようになりました。それに応じて、クラスタの様々なコンポーネントはこの AZ に振り分けられます。AZ は、新しい変数 subnet_idsazs で定義されるようになりました。force_azs は廃止しました。この変更により、クラスタ変数と出力の間の均一性も向上しました。

wingame イメージを、Windows Server 2012 R2 から Windows Server Datacenter 2019 にアップグレードしました。また、パフォーマンス向のために、Windows DefenderWindows Firewall をデフォルトで無効にしました。

RemoteGUI (ベータ)

新しい RemoteGUI は、エンコーディングパイプラインに関するライブで視覚的な情報を提供します。ライブストリームのコンポジションに問題が発生した場合に、トラブルシューティングを行い、ボトルネックがどこにあるのかをより正確に特定するのに役立ちます。

Unity プレハブの変更

Unity プラグインのエディタ部と SDK 部が 2 つの別々のプラグインにエクスポートされるようになりました。

その他変更点や修正点

  • [unity-plugin] SubmitNotificationGenvidSession の一部となりました。関連するメソッドは、GenvidStreams で非推奨としてマークされます。
  • [unity-plugin] エラーがない場合でも SubmitGameData が必ず false を返す不具合を修正。
  • [unity-plugin] SubmitGameDataSubmitAnnotationSubmitNotification にオーバーロードを追加し、利便性と同質性を向上。 (すべて同一のオーバーロードとなりました)
  • [unity-plugin] SubmitGameDataSubmitAnnotationSubmitNotification のすべてのオーバーロードは、null に対して一貫して、早期に false を返し、エラーログを表示するようになりました。
  • [ingest] サポートされているカラーフォーマットとカラースペースを解説書に追加。
  • [ingest] Ingest サンプルで RTMP ソースを切断するとクラッシュする場合がある不具合を修正。
  • [ingest, gvencode] オーディオソースがステレオでない場合のオーディオストリームのリサンプリングの問題を修正。
  • [ingest, gvencode] OBS を停止して起動すると、オーディオ/ビデオの非同期が発生する問題を修正。
  • [ingest, gvencode] インターネット接続に問題がある場合に、オーディオ/ビデオの同期が乱れる問題 (遅延、ドロップ、スロットル) を修正。
  • [composed] クラスタ起動後にゲームデータが表示されない問題を修正。
  • [composed, gvencode] コンポジションデータの帯域幅を最適化。
  • [toolbox] 現在の Azure サブスクリプションにイメージを作成するコマンドを追加。これにより、Azure でのクラスタ作成をより迅速に行うことができます。
  • [toolbox] upload-images-sdk の解説を更新
  • [toolbox] Linux サーバーが、設定を適用して Vault アクセスを確実に行なうために dhclient を再スタートするようになりました。
  • [toolbox] genvid-azure-image の実行に Python 3.8 が必要となりました。
  • [studio] Studio コンポーネントをダッシュボードごとに 1 種類に限定。
  • [studio] Studio ダッシュボードの 「」+Broadcast(Deprecated)」」 パネルを削除。
  • [studio] シーン作成時の、コンポーネント設定を削除。
  • [studio] Studio でダッシュボード ID を有効化。適切に保存するためには、英数字で始まる文字列でなければなりません。
  • [studio] カバー トランジションにオーバーシュート補間を適用したときに、オーバーシュート セクションに黒枠が表示されなくなりました。
  • [studio] 再生を開始しない場合に、モニタからダッシュボードに切り替えるとクラッシュする問題を修正。
  • [studio] 障害発生後に複数回再スタートする問題を修正。
  • [studio] 同時読込によるブラウザの速度低下を修正。
  • [studio] Studio UI パフォーマンスを最適化。
  • [studio] クラスタで初めて Studio を開いたときに、Studio のデフォルトシーンが表示されるようになりました。
  • [azure] 新しい genvid-azure-image コマンドで、Genvidtech Azure blob ストレージから直接ベースの Linux および Windows イメージをインポートしたり、Windows ゲームイメージを準備したりできます。
  • [azure] Azure のリソースグループと共有イメージギャラリーのデフォルト値を変更。
  • [azure] 解説書を更新し、Azure で SDK を使用するには Python 3.8 が必要であることを追記しました。
  • [azure] genvid-azure-image を使用する際の shared_gallery_image_version の解説を更新。
  • [web サンプル] request と request-promise のライブラリを axios に変更。
  • [web サンプル] すべての配信サービスに SSL サポートを追加。
  • [web サンプル] ローカルクラスタの自己署名証明書を生成するための generate-ssl.py スクリプトを追加。
  • [web サンプル] サンプルのブラウザコンソールエラーを修正。
  • [web サンプル] cube の色を変更した際にアノテーションが正しく表示されるようになりました。
  • [web サンプル] 埋め込みサービスの SSL サポートを向上。
  • [web サンプル] コンソールで「No Composition Data found」という警告が発生するキャッシュの問題を修正。
  • [web api] genvidClient.IDataFrame.timeCode をミリ秒に変換。
  • [nomad] Nomad バージョンを 0.12 に更新。
  • [DirectX cube サンプル] cube DirectX のビルドに関する解説を変更。
  • [ue4] Unreal サンプル ビルドでの非推奨プロパティの警告を修正。
  • [ue4 cube サンプル] ue4.py build で不正なバージョン引数が使用された場合のスクリプト例外を修正。
  • [ue4 cube サンプル] GenvidEditor が HTTP request を処理中に失敗することがある問題を修正。
  • [ut4 サンプル] AWS インスタンス上で UT4 サンプルが実行できない問題を修正。
  • [web サンプル] Cube と Unreal Tournament の Web サンプルに、Twitch サポートのために欠落していた /health エントリーポイントを追加。
  • [terraform] Init および ImportModule 起動時に、モジュールをダウンロードするための terraform workdir フォルダを一貫して使用するように変更。
  • [ut4] クラウド alb_ssl クラスタ上での SSL ストリーミングに対応。
  • [genvid-ami] vb-audio ドライバの URL が https を使用するようになり、公式リンクを使用するようになりました。
  • [インストーラ] 要求される Terraform スタンダードモジュールのダウンロードが必要になったため、インストーラに Git インストールを追加。
  • [bastion-ui] 多数のクラスタが存在する場合に Terraform 設定ページでスクロールする問題を修正。
  • [tick] Chronograf バージョンを 1.3.9.0 に更新。
  • [tick] マージしやすいように、エクスポートしたダッシュボードのキーを並べ替えました。
  • [rootd] rootd がクラッシュして再起動した場合に、システムがデータの送信を再開するように修正。

既知の問題

プロキシを使用している場合に Compose ウィンドウが使用できない。

Bastion の将来のバージョンには、異なるマシンからのアクセスを許可するリモートサーバーが追加されます。現行バージョンではこの機能を限定的にサポートしており、Bastion ホストがクラスタファイアウォールに守られている場合に (Amazon EC2 マシンなど)、問題が発生することがあります。

回避方法としては、マシンのローカル IP がクライアントマシンからアクセスできるように、Bastion マシンへの VPN 接続を行うことです。

Windows がスリープ状態から復帰後、アプリケーションが正常に動作しない。

Nomad は、それ自体も含み、スリープ中のジョブで問題が発生する場合があります。Nomad 側で修正される可能性は低いものの、プロダクション環境では発生しません。最善の回避方法としては、サービス実行中は Windows がスリープ状態にならないようにするか、 genvid-bastion reinstall でサービスを開始しなおすことです (genvid-bastion restart だけでは不十分です)。

リセットしても YouTube のストリームが正常に再起動しません。

YouTube ライブ配信サービスで配信を行う場合、クラスタ上のすべてのジョブを起動した後にストリームが正しく開始されなかったり、停止してすぐに再起動した場合に前回のセッションとして表示されたりすることがあります。後者の方がましかもしれませんが、その状態のまま継続するとストリームに遅延が発生する可能性があるため、あまりお勧めできません。

回避策として、YouTube のダッシュボードからストリームキーをリセットするか、以下の手順に従ってください。

  1. gvencode または services job を停止する。

  2. 2 分以上待つ。

    または、YouTube Studio ダッシュボード (https://www.youtube.com/live_dashboard) で配信が終了したことを確認する。

  3. サービスを再開する。

今後の SDK のバージョンでは、これらのケースを管理する方法を追加していきます。

オーディオがマイクの音声やループを無限にキャプチャする。

WASAPI のオーディオ自動キャプチャモードを使用した時に、マシンのデフォルトのオーディオ-デバイスを通過するサウンドがすべてキャプチャされてしまいます。これには、システムアラートやマイク入力だけでなく、Web ブラウザも含まれます。ゲームを実行しているのと同じローカルマシンを使用してゲームストリームをテスト視聴すると、ゲームは自分自身のオーディオストリームを~10秒の遅延でキャプチャします。これが次第に音質が劣化する (ストリーミングされる度に圧縮されるため) エコーを生み出します。

オーディオを無効にするには、次の 2 つの方法があります。

  • 設定で settings.encode.input.silenttrue にする。 (デフォルト設定をする。)
  • raw オーディオキャプチャを使用する (Unity のデフォルト設定)。

Firefox でのスタンドアロンプレイヤーが動作しない。

読み込み可能なストリームを Firefox で有効にする必要があります。about:config URL で、 dom.streams.enabledjavascript.options.streams のプリファレンスを有効にする必要があります。

オートカットのチェックボックス設定はローカルにのみ保存されます。

Studio では、Scene Widget 内の自動カットチェックボックスの設定はローカルストレージにのみ保存されます。ブラウザのキャッシュがクリアされるとユーザーからの入力もクリアされます。また、Studio セッション終了時に自動カットが「オン」になっている場合は、Studio セッションを再び開始すると、デフォルトで「オフ」に戻ります。

Studio は、複数のウィンドウから同じコントロールの入力を受け取ることはできません。

Studio が、複数のブラウザウィンドウで開かれていて、異なるソースから 1 つのコントロールに入力を受信した場合、最後の値は最新のものに更新されるのではなく、異なる入力間でバウンスされます。たとえば、Audio Mixer Widget でユーザーが Master Gain のスライダを 20 db に変更し、別のユーザーが 0 db に変更した場合、スライダハンドルは 0 db に設定される代わりに 20 db と 0 db の間でバウンスします。この問題が解決されるまで、異なる ウィンドウから 1 つのコントロールへ入力することはお勧めできません。

Nomad を使用して起動していない場合、Genvid SDK が統合されたアプリケーションは一度に 1 つしか実行できません。

Genvid SDK を使用したアプリケーションを Nomad を使用せずに起動した場合、デフォルトのセッション名が割り振られます。Unity エンジンや Unreal エンジンでアプリケーションをテストするときや、アプリケーションを手動で起動するときに便利です。

現在、環境変数 GENVID_SESSION_NAME をユニーク名に変更していない場合、Genvid MILE SDK は、この方法で起動した複数のアプリケーションをサポートできません。Nomad を使用してアプリケーションを起動することで、この問題を回避することもできます。

この問題は、今後のリリースで修正予定です。

Twitch および YouTube の同期について

テストにおいて、Twitch と YouTube でのライブ配信時に同期の問題が発生することを確認しています。詳細と回避策については Twitch および YouTube を参照してください。

カスタムログファイルはクラスタに対してユニークである必要があります。

クラスタ上のカスタムログファイルの値が stdout または stderr 以外の場合は、すべてユニーク名を持つ必要があります。 (たとえば、2 つのジョブを default.out にすることはできません)

Azure のレポートでは、要求されたインスタンスサイズが利用できない。

Azure では、ゲームマシン用の計算インスタンスタイプ Standard_NV6 を使用しています。一部のアカウントでは、このインスタンスタイプのプロモバージョンしか利用できません (Standard_NV6_Promo)。

Azure モジュールで Terraform のセットアップを行うと、The requested size for resource 『XXXX-game-1』 is currently not available in location 『XXXX』 というエラーが発生することがあります。

回避策としては、Terraform の設定ページで instance_game_typeStandard_NV6_Promo に変更し、コマンドページで Plan apply -> Apply を再度行ってください。

Twitch における iPhone の問題

iOS デバイス上では Twitch API は getPlaybackStats() 呼び出しの属性の値を返さないため、同期のパフォーマンスが不正確であったり、一貫性がなかったりすることがあります。

インターネットの接続速度が遅いと、Ingest の実行中にゲームデータが非同期になることがあります。

Ingest で Studio を実行している場合、インターネット接続の速度が低下すると、ゲームデータがビデオストリームから非同期化されることがあります。スローダウンが解消すると、ゲームデータはビデオストリームに再同期されます。

デフォルトのリージョンが利用できない場合の Genvid AMI 設定の制限。

AMI のデフォルトリージョンがない場合や、現在の Terraform 構成では動作しない場合は、 aws configure を実行して、アクティブな OU のデフォルトリージョンを動作するリージョンに更新することができます。

Twitch は、ローカルクラスタ上の SSL 認証済みサイトでホストする必要があります。

Twitch の新しい変更点は、埋め込まれた Twitch ストリームが SSL で認証されたサイトでホストされるようになったことです。ローカルクラスタはデフォルトでは SSL を提供していませんが、web サンプル をロードする際には SSL を実装することができます。

NTP の時間オフセットが大きいと、ストリームの再生ができなくなります。

大きな NTP 時間オフセットが発生した場合、ストリームの再生が停止する可能性があります。回避策としては、ゲーム機が自動的に時計を更新するように設定されていることを確認してください。ローカル設定では、AWS IP アドレスを pool.ntp.org に置き換えてください。

詳細については、 AWS 設定セクション を参照してください。

Azure のデプロイには Python 3.8 が必要です。

Azure のデプロイを行なう Python ツールセットには Python 3.8 が必要です。ただし、SDK と一緒にインストールされている Python のデフォルトバージョンは 3.5 です。Azure にデプロイする場合は、Python 3.8 を手動でインストールする必要があります。

Azure での bastion 名は5 文字以内である必要があります。

Azure で作業を行なう場合、最大 5 文字という制限があるため、bastion には短い名前を選ぶ必要があります。

Azure の genvid-azure-image コマンドは、時間がかかるため、タイムアウトが発生する場合があります。

新しい genvid-azure-image create-images コマンドを使用すると、共有イメージのバージョンを作成したり、storage_blob 内の image_blob を作成するときに、Azure で Terraform のタイムアウトが発生する可能性があります。この問題を解決するには、同じコマンドをもう一度実行してください。

クラスタのアップグレードまたは AZ 設定の変更後に CIDR 競合エラーが発生。

1.24.0 にアップグレード後、または AZ 設定でアベイラビリティゾーンの数を変更した後、Plan apply -> ApplyInvalidSubnet.Conflict: The CIDR '' conflicts with another subnet のエラーが発生する場合があります。もう一度 Plan apply -> Apply を実行すると解決できます。

アップグレード後にクラスタ設定にアクセスすると、エラーが発生する可能性があります。

1.24.0 にアップグレード後、初めてクラスタ設定ページにアクセスしたときに Error missing required argument. The argument subnet is required but no definition found. エラーが発生する場合があります。エラーが発生した場合は、コマンド genvid-bastion restart を実行すると解決できます。

Terraform モジュールのダウンロードに Git が必要になりました。

Git をインストーラに追加しました。必要に応じて、』』Git for Windows』 『をインストールし、PATH 環境変数に設定されていることを確認する必要があります。

クラスタで初めて Studio を開くと、』デフォルト』 シーンが表示されない。

クラスタでスタジオを初めて開いたときに、』デフォルト』 シーンが正しく表示されません。ページを更新すると解決します。

Bastion UIBastion UI: オプションを選択する前に、削除操作の確認ボックスが閉じる。

操作 (追加や更新など) を正常に実行した後、成功のメッセージボックスが数秒間表示されます。そのページですぐに 『削除』 ボタン (『x』 またはゴミ箱アイコン) をクリックすると、成功のメッセージボックスが閉じて確認ボックスが表示され、自動的に閉じます。

回避するには、成功メッセージが閉じるまで待ってから、アイテムを削除してください。この問題が発生した場合は、数秒間待ってから、もう一度アイテムを削除してください。

Bastion UIBastion UI: モジュールをインポートした後、新しいクラスタの設定ページにアクセスできないことがある。

モジュールをインポートした後、新しいクラスタの設定ページにアクセスできないことがあります。 一度バグが発生すると、新しいクラスタが作成されるまで設定ページにアクセスできなくなります。

genvid-azure create-images で、ストレージアカウントを指定すると失敗する。

-s または–storage-account オプションを使用しているときに、genvid-azure create-images コマンドでストレージアカウントオプションが指定されている場合、Azure のイメージの作成に失敗します。