Genvid SDK 1.12.0

Genvid MILE SDK 1.12.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 のインストール支援。

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

UI における主な改善点

UI で多数の改良をしました。Bastion API サービスに、同一のジョブおよびログ API が表示可能になったのもそのうちの 1 つです。Bastion 環境で実行中のサービスを示すとともに、自分のジョブの追加が可能になりました。

また、Cluster API に新しい構成セクションを追加しました。 コマンドラインや Consul-UI を経由せずに直接構成キーを編集することができます。

最後に、Studio で他者が利用可能なダッシュ ボードの保存と復元が可能になりました。

新規 Genvid Unity パッケージ

バイナリバージョンのプラグインが提供され、 Genvid Unity Package に含まれます。このパッケージには、すべてのプラグイン、ライブラリ、および Genvid をゲームに統合するために必要なスクリプトおよび、Genvid を使用した開発を支援する Unity Editor ツールが含まれます。

新しい UE4 Genvid モジュール

このバージョンは、現行の Genvid SDK のデザインを維持しつつ、SDK の将来の機能への架け橋となるものです。以前のバージョンとの下位互換性がありますが、古い class はすべて使用されなくなりました。

詳細は、アップグレードに関する注意事項を参照してください。

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

Genvid ライブ配信 API とサービス

  • ライブ配信設定を新規追加。
    • スタンドアロンプレイヤーのための画面設定での追加遅延。
    • コンポジションモニタの解像度とビットレート (オーディオおよびビデオ)。
  • SDK ログ内のオーディオ デバイス名のクリーンアップ。
  • ストリーミングを閉じる時にストリーミングを停止させる可能性のある潜在的なロック条件を修正。
  • まれに期日を過ぎて誤警告を出す SDK ヘルスチェックを修正。
  • ビデオソースリソースを使用する前に検証。これは video.source.idxgiswapchainvideo.source.id3d11texture2d いずれも対象。エラー発生時のリソースリークも修正。
  • C# ラッパーの SubmitGameData にオーバーロードを追加。 String の代わりに byte array の送信が可能になりました。
  • package.jsoncommonjsnode のディストリビューションに追加して NPM との統合が簡単に行えるようになりました。
  • スタンドアロンプレイヤーと Google Chrome 使用時のメモリリークを修正。
  • コンポジションのオーディオミキサーで失われたオーディオフレームを処理できるようになりました。
  • オーディオおよびビデオストリームが破棄および再作成されるときに起こる同期ズレを修正。
  • video mixer 再起動時に、Studio が初期値を復元するようになりました。
  • イベントのマッピング スキーマのキーにおける数値の使用について修正。以前このような使い方は無効とみなされ、ビューアー Web ソケットが切断されていました。
  • 内部の接続がすべての接続に応答し、ビジーの場合は拒否することを保証。これにより、接続キューがいっぱいになって、サービスのヘルスチェックでの誤検出だけでなく、接続可能時であっても接続拒否となることを防止します。
  • Ingest のサンプルで、10 秒後にストリーマーが切断される不具合を修正。
  • 失われたフレームを補正することなく、デジタル遅延をソースに正しく適用。
  • ビデオディゾルブ、フェードイン/フェードアウトのトランジションが逆の順序で適用されてしまう退行バグを修正。
  • 長時間にわたる配信セッション中に発生するオーディオ/ビデオのオフセットを修正。

Genvid ツールボックスの API と UI

  • genvid-bastion install コマンドにパラメータを 2 つ新規追加しました。
    • --loadconfig または -l で、bastion のジョブとログの構成を更新します。
    • --update-global-tfvars または -u で、グローバル設定をデフォルト値で更新します。
  • Cluster-UI の編集ダイアログ名を修正。
  • リフレッシュの状態で、Cluster-UI の スタート/ストップボタンが、アクティブにならないバグを修正。
  • グローバル変数を設定する前の genvid-bastion install 中に、サービスが正常起動するまで待機します。これにより、サービス開始に時間がかかるときにグローバル変数がオーバーライドされるバグを修正します。
  • サービス開始時の vault を常に unseal します。vault が seal されているために genvid-bastion install コマンドが正しくサービスを再起動することができない現象を修正。
  • py-docker の依存パッケージを 2.0 から 3.1 に アップグレードしました。これにより、 genvid.toolbox.DockerTool class を使用しているスクリプトのうち互換性が失われたものがあります。breaking changes のリストを参照してください。
  • Docker の画像を圧縮して、サーバーへのアップロード時間を短縮しました。この機能を利用するには genvid.toolbox.DockerTool.update_image コールの compress パラメータを使用して、それに従ってテンプレートを更新します。
  • ClusterAPI.get_base_url() の 追加の / を修正しました。 これにより、POST メソッドがサーバーで正しく適用されないことがありました。
  • Bastion-API がデフォルトで、8092 を指して、静的ポートで実行されるようになりました。この値は GENVID_BASTION_BINDING_PORT 環境変数を使用すると変更可能です。
  • 保存する前にサーバー上のデータが変更された場合に、Bastion-UI と Cluster-UI で警告を表示します。
  • 自動開始フラグでマークされたすべてのジョブを開始/停止する start-all と stop-all REST API を追加しました。スクリプトとプラグインは一貫してこの API を使用するようになりました。
  • AMI を TightVNC 2.8.8 に更新しました。これにより、インストーラのバグが修正され、イメージの生成中に初期パスワードを設定することが可能になりました。

サンプルおよびエンジンのプラグイン

Common
  • どの Web サイトでも、圧縮した Docker 画像をクラウド環境で使用するようになりました。それにともない、テンプレートも簡素化され、更新されました。
チュートリアル
  • Web サーバー コードで未使用の ade node パッケージを削除。
Unreal Engine 4
  • map ローディング中にビデオストリームがフリーズするプラグインの問題を修正。
  • 両方のサンプルの Web サイトで、Typescript のバージョンを 2.5.2 に固定。
  • ファイルサイズではなくタイムスタンプが変更されたときに、AWS3 sync でゲームをアップロードするための、更新 Nomad テンプレートのパラメータを修正しました。
Unity
  • プレハブで映像ストリームを破棄するプロセス中に発生するタイミングの問題を修正しました。
  • 利用できないコマンドに関連するドキュメントのマイナー修正。
  • Unity ビルド後に Unity Editor のログファイルをダンプ。
  • サポートされているバージョン 5.6 より古い Unity で、カメラに配置した CommandBuffer に関連してシーンやカメラを変更すると画面がグレーになる互換性の問題を修正。
  • Python スクリプトの読み込み操作に関するパラメータの適切なバリデーションを追加。
  • 順序通りにキューブ/球体に同じ色とサウンドを使用するようにシーン 2 を変更。
  • ビデオストリームが初期化に失敗したときに、D3D11 を使用する旨の警告ヒントを追加。
  • オブジェクトが null のときに、イベントに対する追加のバリデーションを追加。
  • C#のスクリプトのエラーに引っかかると、イベントコールバックがクラッシュを引き起こす問題を修正。

既知のバグ

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

プロキシを使用している場合に 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 のデフォルト設定)。

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

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

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

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

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

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

Genvid Studio UI のレイアウトがセッションごとに保存されない

保存されたレイアウトは、現在の Genvid Studio インスタンスのポートおよび IP アドレスに関連付けられています。今後、セッションが変更されてもレイアウトが継続されるように、修正を行っています。

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

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