Genvid SDK 1.9.0

Genvid MILE SDK 1.9.0へようこそ本リリースは、統合のために必要なすべての機能と安定性を備えています。ローカル環境での開発や限定されたクラウドでのデプロイに使用することができます。他のソフトウェアで提供されるような、完全なプロダクション環境に向けて不足している機能もあります。プロダクション(本番)のデプロイをお考えの方は、support@genvidtech.com までご連絡ください。

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

現在の機能

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

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

今後追加を予定している機能

上記の内容に加えて、準備が整い次第公開できるように、新機能のパイプラインを開発中です。

  • クラスタを共有するためのリモート管理サービス。
  • 外部 API の SSL サポート。
  • 管理 API の ACL サポート。
  • ハードウェアエンコード。
  • インスタント リプレイ。
  • クラスタ設定の管理改善。
  • UI の改善および機能追加 (プラグインを含む)。
  • データストリームのオフライン録音と再生。
  • オフライン配信セッション編集。

このバージョンの主な変更点

Terraform でのリモートストレージのサポート

クラスタの処理方法が大きく変わり、クラスタを完全にリモート処理するためのステップが追加されました。インターフェイスは変わっていませんが、Terraform の状態は、Consul daemon で保持されます。さらに、Terraform 0.10 へのアップグレードを行い、Terraform 自体を大幅に変更しました。アップグレード後にクラスタを復元することはできないため、アップグレードを行う前に 既存のクラスタを破棄 してください。クラスタを作成後、実際に管理できるようにするには、短い init コマンドをコールする必要があります。

新しい負荷テスターサンプル

負荷テストに使用する新しいサンプルを追加しました。サンプルは、サービスに接続する多くのクライアントで開始します。専用のクラスタ設定も含まれています。

Web SDK は、グローバル変数ではなく、モジュールでコンパイル

Web SDK には、モジュールでコンパイルされた新しいバージョンが存在します。これは、 node.js でSDK を使用できるようにするためのものです。バージョンは 3 種類存在します。1 つ目は、グローバル変数を使用し、ブラウザをターゲットにしたもので、下位互換性があります。2 つ目は、モジュールを使用し、ブラウザをターゲットにしたものです。最後は、モジュールを使用し、 node.js をターゲットにしたものです。

新しい New Unreal Engine 4 サンプル

Unreal Engine 4 で直接使用できる新しい統合サンプルを作成しました。このサンプルは、Unreal Tournament と同じコードを使用していますが、設定が簡略化されており、オリジナルの UE4 ゲームへの統合がやり易くなっています。また、統合に役立つ新しいツールも付属しています。詳細は、 Unreal Engine 4 Integration セクションで確認してください。

Studio でソースへの遅延の追加

コンポジションモードが有効になっている場合、各ソースに遅延を追加することができます。この機能により、pip とボイスオーバーをうまく同期させることができます。

Genvid プラグインがリモートクラスタをサポート

Genvid Plugin for Unity および Unreal Editor でリモートクラスタを選択して制御できるようになりました。どちらのプラグインも Genvid の設定変更、ジョブの開始、停止、SDK Health Check の結果の表示を行うことができ、クラウドで実行されていたとしても、ゲームの状態を把握するのに役立ちます。

Bastion リバースプロキシ

Bastion リバースプロキシ機能によって提供される API やクラスタサービスを追加しました。これによって、アクセス管理やロギングなど、サービスの集中管理を行うことができます。安全な環境を確保するため、サービス API への直接アクセスは、最終的にリモートクラスタで切断されます。

この変更により、cluster-api サービスでのみ使用可能だった以前のリバースプロキシ api が変更されます。このバージョンでは、 /v1/cluster/{cluster}/v1/ への呼び出しをすべて /v1/proxy/{cluster}/cluster-api/v1 にリダイレクトします。ただし、この API の将来のバージョン (およびその他のサービス) にアクセスするには、この API を更新する必要があります。

その他小さな変更点や修正点

  • [sdk] 重負荷テスト中、イベントを受け取った時のクラッシュ発生する問題を修正。
  • [doc] Bastion や Consul での問題解決方法を見つけにくかったため、GENVID_DEFAULT_IP の使用方法の資料を更新。
  • [samples] インストーラで欠落していた samples\streaming_services フォルダを追加。資料に記載されているのと同じコードです。
  • [bastion] Bastion-UI でクラスタを作成する時に、Terraform ソースを選択する機能を追加。
  • [bastion] クラスタのステータスを問い合わせるため、新しい terraform/instance/status API を追加。 genvid-clusters terraform-status コマンドで使用できます。
  • [metrics] gvencode サービスにメトリクスを追加。
  • [metrics] ストリームコンテキスト、フレームグラバーにメトリクスを追加。
  • [ツールボックス] Cluster api に get_proxied_url メソッドを追加。Bastion によって代用される指定のサービスの URL を返します。
  • [cluster-ui] 新しい設定セクションで、イベント map と reduce の作成と編集ができます。
  • [plugins] Unity と Unreal の両方のプラグインが、ローカルクラスタ、リモートクラスタの制御をサポート。
  • [gvencode] 長時間配信のストリーム同期を向上
  • [unity plugin] editor での Cluster-API 更新エラーを修正。
  • [unity plugin] Cluster-API の静的メニュー生成を削除。
  • [ue4 plugin] url リンクが無効な時に、エラーフィードバックを追加。
  • [tutorial] 合成ストリーム表示時に、オーバーレイのクリッピングの問題を修正。
  • [studio] 合成ストリーム内のビューポートの変換を記述するアフィン行列を、ピクセル単位のビューポートではなく、通常のビューポイント機能で処理するように変更。

既知のバグ

このリリースでは一部のバグが未修正のまま残っていますが、まもなく修正する予定です。

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

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

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

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

gvencode で再スタートした後、YouTube のストリームが正しくリセットされない

サービスが停止して、その直後に再スタートした場合、YouTube のライブ配信サービスは、同一ライブ配信セッションであると判断します。ほとんどの場合は、これで問題ありませんが、サービスと実際の視聴との間に長い遅延が発生するために、直前のセッションが表示されてしまう可能性があります。今後のバージョンでは、新しいストリームを適切にリクエストする方法を実装する予定です。今後のバージョンでは、新しいストリームを適切にリクエストする方法を実装する予定ですが、それまでは、YouTube ダッシュボードからストリームキーをリセットするか、サービスを再スタートする前に、しばらく (5 分程度) 時間を空けるようにしてください。

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

ループバックデバイスでオーディオをキャプチャしているため、ゲームを実行しているマシンを通過するすべてのサウンドがキャプチャされます。これには、システムアラートやマイク入力だけでなく、Web ブラウザも含まれます。ゲームを実行しているマシンからゲームストリームを鑑賞した場合、最大 10 秒の徐々に音質が劣化 (ストリーミングのたびに圧縮がかかるため) するエコーがかかった状態で、ゲーム自体のオーディオをキャプチャしているのがテストし確認できます。推奨する解決策としては、オーディオを無効にする (デフォルト設定で genvid.encode.input.silent = true) 方法、または、Web サイト監視に別のマシンを使用することです。この問題は、ゲームをクラウド環境でデプロイした際には発生しません。

サービスが statsd サービスを検出できない

GENVID_STATSD_URL 変数を使用していない場合、開始前に statsd サービスを検出することができません。次回のバージョンで修正予定です。

ゲームキャプチャが、バックグラウンドでの実行から復帰しない

多数の``Genvid_SubmitVideoData`` を実行中、バックグラウンド (ウィンドウの最小化、またはスクリーンセーバーの起動) 時にチュートリアルサンプルが送信され、ゲームの復帰時にバグが発生することがあります。 キャプチャデータを再生すると、フレームが正しい順序で再生されません。 このバグは、正しく構成されたサーバーでは発生しません。

Unity サンプルは、Unity 2017.2 では起動しません

Unity サンプルのパッケージングスクリプトは、Unity 2017.2 をサポートしていません。ゲームをクラウド上で実行しようとすると、ライブラリ欠落の問題が発生します。現在、Genvid SDK は公式に 5.6 シリーズのみをサポートしていますが、次のバージョンで Unity 2017.2 のサポートを追加予定です。