Genvid SDK 1.13.0

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

プロダクションの快適なデプロイを行うための機能がすべて備わるまで、定期的にリリースの更新を行っていきます。リリース間のアップグレードをスムーズに行うことができ、可能な限り後方互換サポートを行えるよう、常に努力しています。不明な点などがありましたら、弊社までお問い合わせください。

現在の機能

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

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

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

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

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

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

Bastion で Cluster-API を実行

cluster-api は、クラスタの代わりに bastion で実行されるようになりました。このことにより、クラスタが停止しても、サービスを利用し続けることができます。また、bastion からの停止・再開も可能です。

クラスタがジョブを持つ新機能を追加しました。Bastion 内の個々のクラスタごとにジョブが実行されます。

UE4 Genvid モジュール (クライアント/サーバー)

Genvid モジュールは、Genvid SDK クライアント/サーバーアーキテクチャに準拠しています。 Genvid モジュールは、SDK バージョン1.12.0 と下位互換性があります。このバージョンへの移行に関する情報は、1.13.0 リリースノート、または解説書の Blueprint およびクライアント/サーバーのセクションを参照してください。

新ヘルスページ

クラスタ UI と Bastion UI の両方で、ヘルスを確認するヘルスページが追加されました。

YouTube の同期と長時間安定性の改良

システムに数多くの改善を行いました。

  • ネットワークの輻輳が発生した場合に、コンポジションサービスでメモリ使用量が増加してしまうバグを修正。
  • ASIO 仕様に準拠するようコードを更新しました。
  • コンポジションサービスと Genvid SDK に参照クロックを追加しました。
  • 欠落フレームの検出精度の向上。
  • gvencode がコンポジションの終了を受信する場合のクラッシュの回避。
  • gvencode が新しいジョブを開始する準備ができたときに、コンポジションサービスで発生していたクラッシュを修正。
  • 不正な NTP 応答を受信した後に gvencode が停止していたバグを修正。
  • より正確なデータ同期。同期は送信時間に基づくようになりました。

その他変更点や修正点

  • [sdk] ネットワークの輻輳が発生した場合に、コンポジションサービスでメモリ使用量が増加してしまうバグを修正。
  • [sdk] ASIO 仕様に準拠するようにコードを更新。
  • [sdk] いくつかのデータ競合を修正。
  • [sdk] 同じフレーム番号を持つフレームをドロップするようになりました。
  • [sdk] 無効なストリームタイプのメッセージは、SDK に到着するとドロップされるようになりました。
  • [bastion-api] terraform コマンドを終了する可能性を修正。
  • [consul] Consul リクエストがエラーを返したときの CPU 負荷の問題を修正。
  • [cluster-api] ジョブで consul-template を実行しているときに Vault トークンを更新しなくなりました。
  • [ami] Genvid Python ツールボックスが Genvid AMI に追加されました。toolbox_location 変数を Genvid Bastion がアクセス可能なパスに設定することで、更新することができます。
  • [ami] wingame AMI に最新の Windows Update がインストールされていることを確認します。
  • [toolbox] genvid-ami に新しい delete コマンドを追加しました。
  • [toolbox] @file 構文を使用して、引数リストをファイルに渡すことを許可します。 例: genvid-ami delete -n @todelete.txt
  • [toolbox] genvid-ami list コマンドに --region 引数を追加しました。
  • [toolbox] 接続を受け入れる前に Vault を初期化する場合の、サービスのインストール (genvid-bastion install など) の競合を修正。Consul が再起動により破棄された後、またはスリープ状態になっているマシンでしばしば発生します。
  • [toolbox] genvid-amiclean コマンドでのエラー処理が改善されました。
  • [terraform] 3 つの Genvid Terraform リポジトリ (clustergamegenvid) は、単一のリポジトリ SDK-X.Y.Z にグループ化されました。
  • [broadcast pipeline] コンポジションサービスと Genvid SDK に参照クロックを追加しました。
  • [services] 初期データストリームキャッシュの設定を許可。設定は genvid.dataStreams で行ってください。
  • [composed] すべての失われたフレームを記録。 1000 フレームごとに 1 つのログではありません。
  • [composed] 欠落フレームの検出精度が向上。
  • [[composed] 欠落フレームのメッセージによるログの過多を回避。
  • [gvencode] gvencode Docker イメージ内の壊れたフォントファイルを修正。
  • [gvencode] gvencode がコンポジションの終了を受信する場合のクラッシュを回避。
  • [gvencode] gvencode が新しいジョブを開始する準備ができたときに、コンポジションサービスで発生していたクラッシュを修正。
  • [gvencode] studio のモニターが接続されているときのリソースリークを回避。
  • [ntp] デフォルトの ntp サーバーを pool.ntp.org に変更。
  • [ntp] 不正な NTP 応答を受信した後に gvencode が停止していたバグを修正。
  • [youtube player] より正確なデータ同期。 同期は送信時間に基づくようになりました。
  • [standalone player] コンポジションサービスがクラッシュした場合、ビデオ再生が自動で再開するようになりました。
  • [statsd] URL の変更や接続エラーが発生した場合に再接続できるよう、statsd URL にウォッチを追加。
  • [statsd] statsd サービスを探す際に長いポーリングクエリを使用し、終了時のクラッシュを修正。
  • [genvid-bastion] サービスではなくジョブにのみに影響を与えるために、genvid-bastion stop と``start`` コマンドに新しいオプション --jobs-only を追加。
  • [linux] Linux サーバーとイメージを Debian 9.4 にアップグレード。
  • [linux] Linux がシグナルを発生させた際に、スタックフレームをログに追加し、デバッグ情報でビルド。
  • [cluster-ui - bastion-ui] UI のヘルプボタンからの SDK 解説書、フォーラムページ、サービスのバージョン情報へのアクセスを追加。
  • [cluster-ui - bastion-ui] about プロンプトに SDK バージョンを追加。
  • [cluster-ui] システムジョブが正常に実行され、複数のタスクが実行されているが 1 つのタスクカウントしか持たない場合に、誤った色が表示される問題を修正。
  • [bastion-ui] 空でないクラスタにモジュールをインポートできるようになりました。
  • [swagger-ui help] Swagger UI から API コールを試す機能を追加。
  • [unity prefab] Genvid ビデオスクリプトから Camera キャプチャタイプの選択を削除。Texture キャプチャタイプは、CameraTexture キャプチャタイプの両方をサポートするようになりました。
  • [unity prefab] プレハブのデフォルト値を変更して統合を高速化。
  • [unity prefab] ビデオが反転する問題を防ぐために、テクスチャとカメラによるビデオキャプチャのサポートを強化。
  • [unity-plugin] Unity editor を閉じてクラスタ選択が保存されるときのエラーを修正。
  • [ue4-plugin]ビデオストリームとビデオキャプチャの開放の問題を修正。
  • [ue4 plugin] Unreal Engine 4.18、4.19 との互換性を追加。
  • [ue4 plugin] レスポンスやリクエストが有効でない場合に起こる潜在的なクラッシュを回避するため、Rest API 検証を追加。
  • [ue4-plugin] PCH ファイルを無効にする際のコンパイルエラーを修正。
  • [tutorial] ライブ配信時間 (エンコーダクロック) に加えて、デバッグオーバーレイにセッション時間 (ゲーム内クロック) を追加。
  • [studio] タッチスクリーンを使いやすくするため、スライダコントローラを最適化。
  • [studio] ビデオトランジションのプッシュとカバーを追加。
  • [studio] オーディオミキサー スライダの使用中に発生するクラッシュを修正。
  • [studio] ページを変更後に動作を停止するモニターページを修正。
  • [studio] 機能していなかったダッシュボード作成を修正。
  • [studio] モニタービューでオーディオのないソースを選択する際に起こる gvencode のクラッシュを回避。
  • [documentation] REST API の例を追加。
  • [documentation - unity] ローカルでの統合を容易にする新しいステップごとの解説を追加。
  • [documentation - unity] Unity 統合で参照する優良事例のリストを追加。
  • [documentation - cloud] ゲームマシンのパブリックマシン IP についての説明を追加。
  • [unity サンプル] 他のサンプルと同様にフルスクリーンボタンを追加。
  • [ut4-sample] 特定のカメラを使用する際に、すべてのチームデータの送信を妨げてしまう恐れのある、プレイヤー選択のハイライトの色が正しくないバグを修正。

既知のバグ

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

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

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

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

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

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

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

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

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

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

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

Firefox でのスタンドアロンプレイヤー

スタンドアロンプレイヤーを適切に動作させるためには、読み込み可能なストリームを Firefox で有効にする必要があります。about:config URL で、dom.streams.enabledjavascript.options.streamstrue に設定する必要があります。

すべてのストリームが破壊された場合、Genvid Studio の動作が停止する

Genvid SDK でライブ配信を行うアプリケーションで Genvid Studio を使用している時に、オーディオ/ビデオストリームを破棄して作成しなおすと、スタックを再開するまで、オーディオ/ビデオストリームが動作を停止します。

UT4 をしばらくの間実行すると、YouTube ストリームが停止する

UT4 のサンプルを数時間実行すると YouTube ストリームが停止することを確認済みです。本件については現在鋭意調査中です。

ソースが1つだけの場合、studio がクラッシュする可能性があります。

Studio のモニターセクションで、ゲームの 2 番目のインスタンスがない場合、Source-1 をクリックするとストリームがクラッシュします。