スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« 着々と進んではいるものの | トップページ | クライアント側は完了 »

Mirror-DTCの録画機能

今は、Mirror-DTCの開発フェーズで、まずは、macOS版をWindows版のVer1.4.0相当に更新しようとしている。クライアント側の更新としては、接続受け入れ/音声出力設定に続いて録画機能を実装中なのだが、Mirror-DTCならではの苦労もある。

録画機能というのは、入力された画像/音声フレームをエンコードして出力ファイルに書き込む機能、という事になるのだが、Mirror-DTCの場合には、サーバーからデスクトップ画像や再生中の音声なんかが送られてくるので、それらの受信データからエンコードされた動画ファイルを出力する機能、という事になる。
 
で、上記を見ていると、例えば、AG-WebカメラレコーダーだとかAG-デスクトップレコーダーなんかと同じ様な感じしかしないのだが、Mirror-DTCの録画機能では、冒頭に書いた様な、ならではの、苦労もある。
 
具体的には、Mirror-DTCの場合、通常時のマウスカーソル画像というのは、サーバーから送られてくる画像には含まれていないので、録画時には、そのカーソルを合成した画像を作成して合成してからエンコードする必要がある。
 
また、Mirror-DTCの場合、接続中にサーバー側の解像度を変更したり、画質調整用に画像の拡大/縮小倍率を変更したりする事も可能なのだが、これらの操作は録画中に行われても問題無い様にしてある訳だ。
 
つまり、Mirror-DTCの録画機能では、入力画像のサイズはフレーム毎に変化する事を想定しなければならないし、同様の事は、音声データについても言える訳だ。
 
具体的には、Mirror-DTCの音声データのサンプリング周波数は、接続中にも、48000Hzから8000Hzまで変更可能だし、ステレオ/モノラルの変更も可能だ。
 
もっとも、より問題となるのが、Mirror-DTCの画像データは、普通、変化が無い場合には送られて来ないし、音声データについても、音声出力が行われていない場合には、送られて来ない訳だ。
 
しかし、録画出力する動画の形式はmp4形式になるので、普通に再生/シークなんかを行える様にするためには、データ転送が行われていない期間の画像/音声データについても、書き込んでおいてやる必要がある訳だ。
 
更に問題をややこしくするのは、Mirror-DTCの転送画像はデスクトップになる訳なので、普通に、フルHDくらいの解像度になる事は想定しなければならないし、フレームレートについても、30〜60FPSくらいで転送されて来る訳だ。
 
しかし、普通のPC環境で、フルHD解像度の60FPS録画をリアルタイムで行えるか、というと、行えないので、それなりの録画結果を得られる様にするためには、それなりにリーズナブルなフレーム落ちを行わせる必要がある訳だ。
 
と、言う事で、Mirror-DTCの録画機能では、実は、普通の録画処理では必要ない様な、結構、複雑な処理も行なっているのだが、その辺の仕組みの構築は、現行のWindows版のVer1.4.0開発時に完了している。
 
このため、それから移植しているmacOS版では、Windows版を開発する時ほどの苦労は無いのだが、それなりのコード量にはなっていて、Windows版がC++で記述されているのに対してmacOS版は、基本的には、Objective-Cで記述してあるので、Windows版のコードを丸ごとコピーしてくる事も出来ない訳だ。
 
と、言う事なので、macOS版でも、録画機能の実装には少し苦労しているのだが、今日の時点で、とりあえず、基本的な録画自体はできる様になっているので、macOS版の録画機能についても、明日には完成している筈ではある。
 

« 着々と進んではいるものの | トップページ | クライアント側は完了 »

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/534482/67355346

この記事へのトラックバック一覧です: Mirror-DTCの録画機能:

« 着々と進んではいるものの | トップページ | クライアント側は完了 »

2018年11月
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  

広告

プライバシーポリシー

  • 当サイトでは、第三者配信による広告(Google Adsense)サービスを利用しています。

    Google を含む第三者配信事業者は、Cookie を使用して、ユーザーのウェブサイトでの閲覧履歴に基づく広告を配信します。 Google 広告 Cookie を使用することにより、Google や Google のパートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。

    収集された情報がGoogleによってどの様に使用されるか、収集される情報をユーザーが管理する方法については、以下のリンクを参照下さい。

    ポリシーと規約 - Google