20191110:成果報告
今回はレンダリング結果の軽量化を図ります。 ここで書いたか忘れましたが、3DディスプレイドングルではWindowsで実行したUnityで12枚の画像を合成した結果(レンダリング結果)をUDP通信でraspberrypiに送信する想定でいます。 この送る際に、画像をPNG形式の圧縮を掛けています。 レンダリング結果の確認のために圧縮したものをファイル出力したりするのですが、これが実に5MBあるのです。 秒間30枚(30fps)送ることになるので、秒間150MBを送らなければなりません。 しかし、raspberrypiの有線LANの通信速度はどうにも秒間39MB程度の様子。 https://raspida.com/new-pi-3b-plus?amp=1 全然足りません。 そこで、秒間150MBをなんとか1/5程度にする方法を検討します。 アプローチは以下の2つ。 ①30fpsの動画としての軽量化 ②秒間30枚送る画像1枚1枚の軽量化 ①を検討します。 世の中ニコニコ生放送、Youtubelive、instaliveとリアルタイムに動画をストリーミングする技術は沢山あります。 この既存技術の適用によって軽量化は実現できるはずです。 しかし、調べてみたものの門外漢の私にはやはりなかなか難しい内容。 これはどっしりと腰を据えて取り組まねばなりません。 その中で断片的に私が理解できた範囲では、どうやらキーフレームという1枚の画像をフルサイズ送るタイミングと、そのキーフレームからどれだけ変化したかという差分情報だけを送るタイミングに分けることで軽量化しているようです。 これだけを実装するなら泥臭くコーディングしてもなんとかなりそうですが、世の中APIというものが普及していますから、すんなりと実装できる手段が転がっているかもしれません。これは引き続き調査をしていくことにします。 手段はどうであれ上記の理解から1つわかるのは、画像フルサイズは送らなければならないということです。当たり前といえば当たり前ですが。 この画像フルサイズが5MBあるのですから、どう考えてもフレームレートは低下してしまいます。画像は軽いに越したことはないのです。 そこで②の検討です。 画像を軽くするにあたって以下の3つの観点で検討する必要があります。 ①PNGでいいのか ②画像を変えることなく軽量化する方法 ...