Genvid MILE SDK 1.33.0

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

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

現在ご利用になれる機能

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

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

主な修正と変更

Studio UIに設定を追加しました。

Studioから配信設定、入力設定、コンポジション設定の編集ができるようになりました。

Unreal 4.27のサポートを追加。

Genvid MILE SDK は、Unreal 4.27を正式にサポートするようになりました。

その他変更点や修正点

  • [sdk] nullptr のアドレスと 0 のサイズを指定して、ゲームデータを送信しないことをサポートしました。
  • [sdk] タイムアウトしたタイムスロットを再利用できない問題を修正しました。
  • [sdk] 無効なソース名を渡すとクラッシュする問題を修正しました。
  • [sdk] 60FPSで構成されている場合に、オーディオやビデオが送信されない問題を修正しました。
  • [sdk] composeD サービスが再接続されたときに SDK 送信元がクラッシュする問題を修正しました。
  • [sdk] Cluster UI 画面外で停止した場合にサンプルが再起動しない問題を修正しました。
  • [web-sdk] Node.js内でWeb SDKを使用した場合に、タイマーがクリアされない不具合を修正しました。
  • [web-sdk] 新しい配信が作成されたときに、Webプレイヤーを自動的にリロードするようにしました。
  • [unity plugin] 60FPSでオーディオ/ビデオが非同期になってしまう問題を修正しました。
  • [toolbox] genvid.toolbox.BastionAPIrender_template メソッドを追加しました。
  • [toolbox] genvid-bastion に、 bastion-api のコンテキストでテンプレートをレンダリングするコマンド render-template が追加されました。
  • [toolbox] Python の SDK クラスの祖先である ConsulTemplateTool を非推奨にしました。
  • [toolbox] genvid-sdkgenvid-bastion コマンドを改良しました。テンプレートのレンダリングの大部分を cluster-apibastion-api のコンテキストで行い、それが適用されると改善されました。この変更は、目に見える形でユーザーに影響を与えるものではありません。
  • [toolbox] genvid-toolbox のインストール時に競合を引き起こしていた未使用の依存関係とバージョン要件に関するいくつかの制限を削除しました。
  • [toolbox] Pythonの依存パッケージの中に、コンパイルが必要なものがある問題を修正しました。Genvid MILE SDK は、パッケージのバイナリ版が存在する場合は、デフォルトでそれを使用するように設定されました。
  • [toolbox] cluster-api /template_renderer API とのインターフェイスとして genvid-sdk render-template コマンドが追加されました。
  • [toolbox] genvid-sdk render-template コマンドを改良し、レンダリングされたテンプレートを設定ファイルとして解釈する機能を追加しました。
  • [toolbox] ClusterAPIdo_consul_template メソッドを非推奨とし、 render_template コマンドを使用するようにしました。
  • [toolbox] genvid-sdk のコマンド consul-template を非推奨とし、コマンド render-template を使用するように変更しました。
  • [toolbox] サポートされているクラスの ConfigTool を非推奨にしました。
  • [toolbox] genvid-sdk setup を改善しました。これは {ROOTDIR}/local-services/init フォルダの内容をロードして Consul K/V ストアの初期コンテンツを設定するものです。
  • [toolbox] genvid.toolboxProjectTool を非推奨にしました。詳細は、アップグレードに関する注意事項を参照してください。
  • [toolbox] bastion-apicluster-api のテンプレートレンダリング関数に環境変数 GENVID_BASTION_IDGENVID_CLUSTER_ID を必要に応じてに追加しました。
  • [toolbox] as_bitrate``を ClusterAPI から削除し、クラスメソッドとして ClusterTool に移動しました。
  • [toolbox] ツールボックスから azure-cli を削除し、代わりにグローバルパッケージを使用することで、依存関係の対応を改善しました。詳細は、アップグレードに関する注意事項を参照してください。
  • [toolbox] Azure CLIのスタンドアロンインストールを使用したAzure統合を改良しました。
  • [toolbox] jsonpath_rw_ext をカスタムコードに置き換えることにより、 genvid-toolbox の依存性を改良しました。
  • [toolbox] genvid-toolbox の依存関係から spur を削除し、オプションとしました。パッケージは非推奨のクラスでのみ使用されていました。
  • [toolbox] vault_load_roles の解説にあった誤字を修正しました。
  • [toolbox] genvid-toolbox を改良し、AWSサポートをオプションとしました。現在もデフォルトでインストールされています。詳細は、アップグレードに関する注意事項を参照してください。
  • [toolbox] genvid-toolbox パッケージの依存関係から chardet を削除しました。
  • [toolbox] azure-cli の依存関係を削除し、アップグレード時に表示されるエラーメッセージの警告を追加しました。
  • [toolbox] genvid-toolbox 用の hvac>=0.10.6 にアップグレードしました。
  • [toolbox] Gossip プロトコルのバインドをデフォルトで localhost に強制することで、ファイアウォールの許可を必要とするローカルコンサルを修正しました
  • [gvencode] 2つ目のソースを起動したときに、コンポジション情報がウェブクライアントに送信されない問題を修正しました。
  • [gvencode] オーディオとビデオのストリームが時間の経過とともに同期しなくなる問題を修正しました。
  • [gvencode] オーディオとビデオのストリームが時間の経過とともに徐々に同期しなくなる問題を修正しました。
  • [gvencode] 無効なパケットを受信するとデコードが停止する問題を修正しました。
  • [bastion-api] /v1/bastion/global/template_renderer API を bastion-api に追加しました。
  • [studio] Studio Transition の Interpolator ドロップダウンメニューを削除しました。Interpolatorのデフォルトが**Linear**に変更されました。
  • [ingest] composeD が停止したときにビデオが失われる問題を修正しました。
  • [ingest] composeD が OBS ストリームの停止を認識しない問題を修正しました。
  • [ingest] rtmpフィードを再起動した後にデータストリームが送信されない問題を修正しました。
  • [ingest] 1080pで長い配信中にingestが非同期になって切断される問題を修正しました。
  • [ue4-sample] Cube Sampleの明度が高くなりすぎる問題を修正しました。
  • [unity-sample] 60FPSで再生している時にオーディオの再生に失敗する問題を修正しました。
  • [loadtester] 負荷テストツールが長時間実行されると、CPUを過剰に消費する問題を修正しました。
  • [cluster-api] 環境変数 GENVID_TEMPLATE_SANDBOX_PATH を追加して、 /template_renderer API を改善しました。この変数はソースのコピー先を指定します。
  • [cluster-api] /template_renderer API を改善し、テンプレートを直接レンダリングするための content フィールドを追加しました。
  • [cluster-api] Cluster API から /consultemplate を非推奨とし、 /template_renderer を採用しました。
  • [cluster-api, bastion-api] GENVID_TEMPLATE_TIMEOUT を追加し、テンプレートのレンダリングにかかる時間を計算できるようにしました。デフォルトは2秒です。設定やジョブテンプレートを含む、すべてのレンダリングの呼び出しに適用されます。
  • [consul] 1つのIPからの同時接続数がデフォルトの最大値に達すると、サービスが開始できなくなる問題を修正しました。

既知の問題

Nomadを使用して起動しない場合、Genvid MILE SDK を統合したアプリケーションは、一度に1つだけ実行できます。

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

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

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

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

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

Azure モジュールで Terraform のセットアップを行うと、エラーが発生することがあります。

The requested size for resource 'XXXX-game-1' is currently not available in location 'XXXX'

回避策:

  1. Terraform の設定ページに移動します。
  2. instance_game_type`を `Standard_NV6_Promo に変更します。
  3. Commands ページに移動します。
  4. Plan apply -> Apply を再度実行します。

スタンドアロンプレーヤーでの iOS デバイスへのストリーミングは現在、機能していません。

スタンドアロンプレーヤーでの iOS デバイス (iPhones と iPads) へのストリーミングは現在、機能していません。この問題は、今後のリリースで修正予定です。

Azure でアベイラビリティゾーンを変更する際には、リソースを破壊して再構築する必要があります。

Azure で AZ を変更する際に、パブリック IP が仮想マシンから切り離されていないため、パブリック IP の削除に失敗することがありました。これは、Terraform プロバイダのバグです。詳しくは、Hashicorp Github の issue をご覧ください。

回避策としては、問題のあるパブリック IP を Azure ポータルの仮想マシンから手動で切り離します。

genvid-sdk upload-images-sdk コマンドが、Azure Cloud 上での Docker イメージのアップロードに失敗します。

一部の Docker イメージは、サイズが大きいため、 genvid-sdk upload-images-sdk コマンドを使用して Azure Cloud にアップロードできません。(SSL エラーと Max retries exceeded のメッセージが表示されます)。

回避策:

  1. Azure UI を開きます。
  2. イメージを手動でアップロードします。
  3. もう一度 genvid-sdk upload-images-sdk を起動します。

既存の AWS クラスタでサブドメインを更新する際に、サブドメイン NS レコードを手動で削除する必要があります。

basic_cluster_alb_ssl または minimal_cluster_alb_ssl を使用して AWS クラスタを作成する場合、ドメインとサブドメインが提供されます。既存クラスタのサブドメインを更新する場合、以前のサブドメインの route53 の NS レコードをメインドメインから手作業で削除する必要があります。これは Terraform 内での NS レコードの処理のためです。

AWS を使用しているクラスタ basic_cluster_alb_ssl のサブネットを削除できません。

basic_cluster_alb_sslsubnet_cidr_block_size を変更したり、AZ の数を減らしたり、既存の AZ を並べ替えたりすると、クラスタはサブネットを削除しようとして止まってしまいます。

設定を再適用しても、問題は解決しません。

回避策として、クラスタを削除して再作成してください。

Bastion クラスタの設定ページのモーダルウィンドウが閉じない。

クラスタの Bastion 設定 ページで、クリックしても、カスタムタグの Properties モーダルウィンドウが閉じない。

回避策としては、もう一度 Properties をクリックしてモーダルウィンドウを閉じてください。

制限事項

誤った順序で設定をロードすると、値が上書きされることがあります。

クラウド上で SSL を使用している場合でも、ローカルクラスタで SSL を使用している場合でも、Web サンプルを読み込む前に youtube.sample.hcl を読み込むと、Web サンプルは web.hcl ファイルから embed_ssl に関連付けられた値を上書きします。

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

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

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

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

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

この問題が解決されるまで、複数の Studio ウィンドウから 1 つのコントロールへ入力することはお勧めできません。

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

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

SDK はフレームレートを 1.0 以下に固定します。

問題を回避するためにストリームのフレームレートを 1.0 に下げました。フレームレートが 1.0 以下の場合は、SDK が 1.0 FPS に固定します。

Azure リソースグループ名のデフォルト値が長すぎる場合がある。

変数 resource_group_name に値が設定されていない場合、 {bastionid}-{clustername} の組み合わせで設定されます。そのため、Azure リソースグループ名が最大文字数である 64 文字よりも長くなってしまう場合があります。

この問題を避けるために、変数 resource_group_name には必ず 64 文字以下の値を指定してください。

Azure での命名についての詳細は Azure Github を参照してください。

AWS クラスタサブネットの競合エラー

AWS クラスタの subnet_cidr_block_size を減らして AZ 数を増やすことを同時に行うと、サブネットの競合エラーが発生します。

この問題が発生した場合、設定を適用しなおしてください。

クラスタの更新時に、Azure ディスクに新しいタグが追加されない。

新しいタグを Azure クラスタに適用する際、ディスクを所有する仮想マシンインスタンスが apply プロセス中に再作成されない限り、 disk にタグは適用されません。

回避策としては、クラスタを削除して再作成することで問題が解決します。

クラスタ名は 64 文字までです。

クラスタ名は、Windows のファイルシステムの制限により、64 文字に制限されています。ファイルディレクトリの最大文字数には、システムのユーザー名やクラスタ名などが影響します。

技術的には 64 文字以上にすることは可能ですが、結果は予測できないものになります。

クラウド環境におけるスタンドアロンモードでコンポジションの寿命の問題

クラウド環境では、スタンドアロン配信の構成でIngestを使用した場合、8時間を過ぎると配信がクラッシュします。