Genvid SDK 1.20.1

Genvid SDK1.20.1へようこそこれはバグ修正リリースです。1.20.0 の詳細については以前のリリースノートを参照してください。

現在の機能

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

  • 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 のインストール支援。

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

  • [api] API の HTTP 応答に含まれる情報量を増やしました。
  • [api] コマンド API に 3 つの新しいメトリクスを追加。
  • [bastion-ui] 存在しないクラスタにアクセスしようとしたときに、エラーメッセージの代わりにスピンロードアイコンを表示するようにしました。
  • [bastion-ui] クラスタをすばやく連続して切り替えるため、リフレッシュレートを修正しました。
  • [cluster] クラスタが存在しないことをユーザーに知らせるエラーメッセージを追加。
  • [cluster] 接続不良についてユーザーに通知するメッセージを追加。システムが、10 秒後に再度イベントのサブスクライブを試行します。
  • [composed] ComposeD 実行時の安定性を改善。
  • [consul] Consul キー genvid/encode/gvencode-image を使用して、ロードするカスタム gvencode docker イメージファイルを指定できるようになりました。
  • [consul] Consul キー genvid/leaf/port を使用して、静的な Leaf ポートを指定できるようになりました。
  • [curl] composed でクラッシュ発生の原因となる SIGSEGV エラーを修正。
  • [genvid-ami] genvid-ami setup が、ツールボックスのバージョンではなく、 『ami_version』 Terraform 変数の値をデフォルトで使用するようになりました。
  • [gvencode] メトリクス 「genvid.gvencode-compose.framesizesent」 が適切な戻り値を返すよう修正。
  • [ingest] ingest と一緒に実行するストリームが、プロセスの再起動時に回復できるようになりました。
  • [ingest] OBS ストリーム停止時に、GVencode がフリーズしないように修正しました。
  • [leafd] genvid.leafd.connection.current がゲージとして正しく更新されるようになりました。
  • [sdk] タイムコードとの依存性により、一部のアノテーションが送信されない問題を修正しました。
  • [sdk] start/stop を複数回行った際に、Unity/Unreal editor のライブ配信で発生する問題を修正。
  • [sdk] Unity および Unreal のエディターモードでアノテーションとイベントが正しく機能しない原因となっていた終了プロセスの問題を修正。
  • [sdk] ログの割り当てに失敗した際に、Bastion/Cluster UI のログで panic のスタックトレースが表示されなくなりました。
  • [sdk] アンインストール時のタスク管理を改善。
  • [sdk] bastion のバケットがなくなった場合の、例外エラーメッセージを改善。
  • [sdk] ジョブに影響される設定が、unload の開始時にデフォルト値に戻るようになりました。
  • [sdk] 過去のデータストリームタイムコードに起因するオーディオ/ビデオの問題を修正。
  • [sdk] ストリームの処理開始の問題を修正。
  • [sdk] ビデオコンテキストが変更されたときのメモリリークを修正しました。
  • [サービス] 内部トークンマネージャーが期限切れのトークンをクリーンアップし、rootd プロセスでの遅く安定したメモリリークを回避します。
  • [サービス] すべての Go サービスが、最も近いサービスのインスタンスを使用して接続を行うようになりました。
  • [studio] 同期が失われたとき Studio ソースの遅延が発生する問題を修正。
  • [studio] Studio でソースの変更を行う際に、gvencode のクラッシュが発生する問題を修正。
  • [studio] 同時に複数のタスクを実行することにより、Studio コンポジションを改善。
  • [studio] モニタ切り替え時の保存ボタンを削除。
  • [studio] Studio の Program ウィンドウ、Preview ウィンドウのちらつきを修正。
  • [studio] シーン間の高速カットで、gvencode のクラッシュが発生する問題を修正。
  • [studio] シーンのライブストリームインディケータが、ページの更新後に適切に表示されるように修正。
  • [studio] ライブコンポジションモードでシーンの切り替え後、バックエンドに 『cut』 コマンドが 1 度だけ送信されるようにしました。
  • [ツールボックス] 使用するバケットがすでに存在する場合に、 AWSTool.update_s3_images が例外を発生させなくなりました。
  • [ツールボックス] BaseTool.kill_process_tree のデフォルトのタイムアウトを 5 秒から 15 秒に変更。
  • [ツールボックス] ルートプロセスの子を再帰的に終了させるように kill_process_tree の動作を変更。
  • [ツールボックス] onerrorBaseTool.rmdir のデフォルト値をメソッドに変更。このメソッドがファイルの削除を 1 分間試行します。
  • [ツールボックス] Runtime.run_nomad_jobs が戻る (または 15 秒後にエラーを記録する) 前に、すべての Nomad ジョブの終了を待つようになりました。

既知のバグ

Twitch Extension Developer Rig が動作しない。

Twitch Extension Developer Rig から、データ同期のためのビデオストリーム、リアルプレイヤーが提供されない。このため、Web クライアントがデータを再生できません。

プロキシを使用している場合に 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.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 つのコントロールへ入力することはお勧めできません。

Genmad SDK では、Nomad で実行されていないアプリケーションは 1 つのみサポートされます。

Genvid SDK を使用したアプリケーションを Nomad を使用せずに起動した場合、デフォルトのセッション名が割り振られます。Unity エンジンや Unreal エンジンでアプリケーションをテストするときやアプリケーションを手動で起動するときに便利です。現在、環境変数 GENVID_SESSION_NAME をユニーク名に変更していない場合、Genvid SDK は、この方法で起動した複数のアプリケーションをサポートできません。修正プログラムが Genvid SDK に統合されるまでは、Nomad を使用してアプリケーションを起動することで、この問題を回避することをお勧めします。

ブロックされた transition は、Studio に再適用できません。

transition の処理中に Studio で別の transition がリクエストされた場合、GVEncode が新たにリクエストされた transition をブロックして、未定義の動作を防ぎます。ただし、Studio にはブロックされた transition が通知されず、transition が発生した状態に変わります。同じ transition を再適用しようとしても、Studio がすでにその状態にあると判断するため、機能しません。

この問題が発生した場合には、別の transition にカット後、以前ブロックした transition にもう一度カットすることをお勧めします。