Genvid SDK 1.18.0

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

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

現在の機能

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

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

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

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

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

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

Unity Streaming 免除

2018 年 9 月 1 日~ 2019 年 8 月 30 日から、ストリーミング期間(2021 年 8 月 30 日)まで継続してストリーミングされる、Unity Projects のインタラクティブライブ配信に Genvid SDK を初期状態で使用している場合に限り、Unity Streaming Restrictions は免除されます。Unity は、Genvid および、それによって恩恵を受ける開発者に対し、この Streaming Restriction 免除の照会の権限を与えるものとします。さらに、Unity は、承認を必要とする開発者に対し、この免除の存在を直接リクエストすることに合意します。当該リクエストは Unity に対して行ってください。

Terraform 統合の改善

Bastion UI において、Terraform の対応の改善を引き続き行っています。

  • Terraform の作業ディレクトリの状態を Consul に保存するように変更し、安定性と自由度が大幅に向上しました。
  • 既存クラスタのクローンを作成した新しいクラスタを作るオプションを追加しました。
  • Terraform 変数の新しいエディタには、変数の説明が含まれており、デフォルト値を一覧表示し、オーバーライドする際にグローバル設定の変数をハイライトします。
  • 値を JSON ファイルとしてダウンロードすることもできます。JSON ファイルを Terraform 変数エディタにドラッグ&ドロップして、複数の値を一度に変更することができます。

Studio での配信 On air

配信は、Studio インターフェイスで、新しい配信ウィジェットを使用して有効、無効の切り替えができます。

broadcast/enable Genvid 設定で、スタートアップのデフォルトモードを設定することができます。配信を即座に開始するには、デフォルト (true) を設定します。

その他変更点や修正点

  • [sdk] Turbo JPEG 圧縮関連の Frameprocessor の競合状態を修正しました。
  • [sdk] サウンドレベル 0 でゲームを実行したときの、gvencode のメモリ暴走を修正しました。
  • [sdk] null のパラメータを提供するビデオの送信時エラーが発生し、swapchain が設定されない問題を修正しました。
  • [web-sdk] ブラウザディストリビューションに genvidMath のグローバルシンボルを再び追加しました。
  • [web-sdk] websocket のタイムアウトを IGenvidConfig クラスで調整できるようにし、デフォルト値を 1 から 30 秒に変更しました。これにより、複数のプロキシ、VPN、遠距離接続時のソケットの接続切れの問題を軽減できるはずです。
  • [web-sdk] genvidFactory TypeScript 定義ファイルを追加し、UMD を使用してすべてのモジュールを再パッケージ化しました。
  • [toolbox] すべてのクラスタに適用されていた、ツールボックス (Clusters.terraform_initgenvid-clusters terraform-init コマンド) の Terraform_init メソッドを修正しました。
  • [terraform] 基本クラスタ設定から、NAT ゲートウェイ作成を削除しました。
  • [ingest] 安定性を向上し、ネットワークが混雑している場合の Ingest のラグを軽減しました。
  • [bastion-api] bastion/terraform/instances/{instanceId}/tfvars/default がデフォルト値でグローバル設定を採用するようになりました。
  • [bastion-ui] Terraform の構成コマンドページで、ボタンとコマンドの動作を修正しました。
  • [bastion-ui] Terraform の構成コマンドのページで、下向きの矢印をクリックしても、モジュール選択のスクロールバーが消えなくなりました。
  • [bastion-ui] Terraform ページで、その他の構成がバックエンドとステータスを正しく表示するように修正しました。
  • [unity build] Unity 2018 のビルドシステムで作成された新規フォルダのコピーする際の python スクリプトの不具合を修正しました。
  • [unity prefab] コンソールに表示する Genvid SDK のログ数を増やすチェックボックスを追加しました。
  • [ue4 rest api] UE4 Rest API を更新し、多くのデータを利用できるようにしました。
  • [studio] ビデオモニタがフリーズする不具合を修正しました。
  • [studio] 1080p/60FPS にコンポジションを最適化しました。
  • [studio] ソースのオフセットが -10 ~ 10 秒の値に対応するようになりました。オーディオ、ビデオ両方のフレームが正確になるように、いくつかの最適化を行いました。
  • [studio-ui] ナビゲーションを改善しました。Studio-UI を再起動したときに、直前にアクティブだったダッシュボードが表示されます。
  • [unity sample] YouTube 使用時に、Admin ページでデータが表示されない不具合を修正しました。
  • [tick sample] TICK サンプルの download および setup コマンドを冗長にしました。
  • [statsd] statsd のアドレスが変わったときに、サービスが statsd に動的に再接続するようになりました。

既知のバグ

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.streamstrue に設定する必要があります。

オートカットのチェックボックス設定はローカルにのみ保存されます

Studio は、Scene Widget のオートカットのチェックボックスの状態をローカルに保存します。ブラウザキャッシュをクリアすると、ユーザーインプットもクリアされます。Studio セッションの終了以前にオートカットを 「on」 にすると、Studio セッションを再び開始したときに、」off」 にリセットされます。

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

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