Genvid SDK 1.19.0

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

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

現在の機能

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

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

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

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

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

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

内部エンジンの改良

Genvid MILE SDK は、内部エンジンの改良バージョンを使用しています。以前のバージョンとの互換性が高いものですが、一部の分野で問題がある場合があります。プロジェクトをアップグレードする際の潜在的なデメリットを回避するため、アップグレードノートの改良エンジンをよくお読みください。

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

  • [cluster-api] cluster-api サービスで Vault および Nomad の初期化を行うようにしました。
  • [bastion-api][cluster-api] ポートのバインディングのためにリッスンできなくなる不具合を修正。
  • [consul] Genvid や Terraform 設定など Consul key の記述の競合状況を修正。設定が失われたり、短時間の間、一部のアプリケーションで値がなくなることがありました。
  • [ツールボックス] genvid-sdk list-nodes コマンドを追加し、クラスタに登録されたすべてのノードをリストアップできるようになりました。
  • [toolbox] 環境変数 GENVID_TOOLBOX_LOGFORMAT で、Python スクリプトのログ形式を設定できます。オプション --logformat を使用して、コマンドラインで設定することもできます。
  • [ツールボックス] 廃止された ipgetter パッケージへの依存関係を削除し、今後のサポート向上のため、GENVID_CHECKIP_URL 環境変数を追加。
  • [toolbox] DockerTool.build_docker でエラーが発生した場合の例外を修正。実際に発生したエラーが表示されなくなっていました。
  • [ツールボックス] genvid-toolboxhvac>=0.7 と競合するようになりました。
  • [terraform] AWS サーバーすべてで、外部プロビジョニングの代わりに、UserData を使用するようになりました。今後、AutoScalingGroup が使用できるようになります。
  • [terraform] consul_nodes がクラスタモジュールから出力されるようになり、スクリプトで作成された Consul ノード名一覧を返します。
  • [terraform] toolbox 変数は、ローカルファイルをポイントしていましたが、toolbox_url に変更されました。s3:// url または pip install 対応パスを使用することができます。
  • [composed] コンポジションサービス再開時の gvencode の安定性が向上。
  • [gvencode] コンボジションサービスと gvencode の間の RTMSP 通信の信頼性が向上。
  • [gvencode] パラメータ化されたスレッドスケーラビリティを使用することで、フレームのエンコーディングおよびデコーディングを向上。
  • [gvencode] コンポジション同期を向上。。オーディオ、ビデオのフリーズやオーディオノイズを軽減しました。
  • [gvencode] 無効な領域への送信時の安定性を向上 (例: picture-in-picture)。
  • [standalone player] スタンドアロンプレイヤーが、欠落ストリームへの HTTP リクエストとしてすべてを受け付ける HTTP リプライを返します。
  • [ue4-plugin] C++ または Blueprint で定義された構造を使用しないで gamedata、annotation、notification を送信する際のクラッシュを修正。
  • [studio] アラートウィンドウではなく、ブラウザコンソールにエラーメッセージを表示するようになりました。
  • [studio] フローが中断された場合の再接続を向上。
  • [studio] UI のスライダの精度を向上。
  • [studio] 自動フローモードが有効な場合に、メインオーディオソースのみが有効になりました。
  • [tutorial sample] デスクトップ解像度より大きい解像度のビデオをストリーミングする際の問題を修正。
  • [tutorial sample] Genvid SDK フレームレート、ゲームのフレームレート、垂直同期をパラメータ化する変数を追加。
  • [loadtester] Docker ビルド (loadtester.py build-cloud) が適切に新しいモジュールを読み込むように修正。
  • [sdk] データサイズがビデオフォーマットと一致しない場合に、Genvid_SubmitVideoData が無効なパラメータステータスを返します。そのこの場合はデータはサブミットされません。
  • [monitor] ゲームのメインウィンドウをドラッグしたときに、モニターがフリーズする問題を修正。

既知のバグ

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 つのコントロールへ入力することはお勧めできません。

Unity 2018 チュートリアル - 解像度が異なる場合があります

Unity 2018 を使用する場合、起動時に解像度の問題が発生する場合があります。 配信しているウィンドウが最適な解像度でないために、ビデオ配信と UI との間でオフセットとなる場合があります。この問題に対する解決策について、現在調査を行っております。 この問題は、2018 以前の Unity バージョンでは発生しません。