またまた、アクションカムを買ってしまった…。最近、動画サイトで不思議な映像(特にモトブログ)をよく見かけるようになった。当初、気にはなってはいたのだが買うまでには至らず。
最近人気なのはInsta360 One X2。よく調べてみると、結構編集に手間がかかるようで、視聴用には360度映像から必要な画角で切り出さなければならず、この作業にかなりのCPU/GPUパワーが必要となる。もっているPCでは力不足だし、PC更新の予定も無い。将来、全天球映像を見たい画角で再生できるブラウザ(再生アプリ、機器)が一般化すれば編集せずに保存しておけば良いのだが、まだそういう状況では無さそうだし、全天球データだとファイルサイズもバカにならない。編集したとしても元データも取っておきたくなりそうなので、そうするとストレージ容量も食うので、今買うのは「自分には」危険だ。
少し調べると、同じInsta360でGo2という「半天球」カメラが目に入った。360度カメラの半分の画角で前方のみ撮影できる。で、このカメラの良い点は編集なしでもmp4動画が生成できる事。360度カメラでも前方だけ撮るモードもあるようなのだが、360度カメラなのに半分しか撮らないの?というジレンマが…。
PCも無いし、と言うことでGo2に決定。とにかく小さい。バッテリー容量も小さいので単体使用では長時間撮影は出来ないが、逆に自動的に指定時間で録画停止するモードが有り、取りたいシーンをサクッと撮るような使い方がメインになりそうだ。無駄に長いショットにならないので潔いとも言える。
テスト撮影も兼ねて、外出時に持ち出して動画・静止画を何枚かとってきた。単体使用(ケースに入れないでの撮影)では、ワンクリックで動画、ダブルクリックで静止画の撮影ができる(アサインはアプリで変更可能)。撮影した後、データを整理する際に少し手間なのが、静止画は特殊形式で保存されている為、Insta360アプリ(自分の場合androidスマホ)を経由しないといけない事。動画も「プロモード」(静止画で言うRawデータのような物で手ブレ補正などがされていない半天球データ)で撮ると特殊形式になるが、画角指定のモードで取ればmp4として保存されている。Go2のケースにはUSB-Cコネクタがあり、PCに繋げばマスストレージデバイスとして見えるので、そのままコピーすれば良いのだが、動画も静止画も一旦スマホにダウンロードしておけば、スマホから動画・静止画とも一気にPCにcopyできる。まあ、これはウチのPC環境がWindowsメインではなくubuntuだからであり、Windowsであれば専用のInsta360アプリが有りこれを使えば特殊形式の動画・静止画とも変換できるのでこれに食わせれば済む。
と、ここまでは順調だったのだが、1つ問題発生。動画・静止画を保存する際に、ファイル名をタイムスタンプにリネームしているのだが、今使っているリネームアプリで認識出来ない。このアプリ、数年前に作って対応出来ないカメラが出たときに手直ししながら使って来たのだが、今使っているPC(ubuntu20)で何故かビルド出来ない。ソースコードも何年か前に書き換えて以来手をつけてなく、しかもあまり使い慣れていないC#で書いているため、もはやメンテナンスする気が起きない。
どうにかならないかと調べてみると、動画のメタデータ取得にffprobe,静止画のexifデータ取得にjheadを使えば良いことを確認。jheadはカメラの内部時計と実際の時間の差を修整するために使っていたのでなんとなくは知っていたが。
bashもそんなに使い込んだ経験は無いのだがそんなに複雑なことをする訳ではないので何とかなりそうだ。と言う事でちょっと書いてみた。2時間くらいweb検索と試行錯誤、デバッグを繰り返し、なんとなく出来上がった。exif(jpeg)やbox(mp4)の資料を漁って面倒なGUIと組み合わせて何日もかけて作ったC#アプリ(C#にしたのはwindowsでもubuntuでも動作可能だった為)は何だったんだろう?
ubunt/linux/unixの文化なのか、単純なcuiコマンドを、パイプやらリダイレクトといったデータやコマンドを繋ぐ機構を使って色々な機能拡張を行ったり、過去の資産を有効に使う事が多い。今回作ったアプリ(シェルスクリプト)も、先程紹介したffprobe,jheadの他にfind,xargsといったコマンドを組み合わせる事で、実現出来た。取り敢えずこれで写真整理が継続できた。