ubuntu20が頻繁にフリーズするのでビデオカードを更新した件

 アマゾンの購入履歴を見ると、去年の4月14日にマザーボードGIGABYTE B450M S2HとCPU Athlon 200GEを買っている。最初にインストールしたOSはubuntu18.04だった。いつだったかは忘れたが、何かのソフトだかハードに対応できなくなった(これも曖昧)のを期に20.04にアップグレードした。

続きを読む →

スマホのUSB-Cコネクター

 このコネクター、ほとんど充電にしか使ってこなかったが、Insta360Go2を買ってから充電以外で使う事になった。このアクションカム、メモリーは内蔵のみなので、SDカードを使うカメラの様にメモリーを抜き取ってカードリーダーで読み出すというような事ができない。通常、専用スマホアプリを使い無線で繋いでカメラのデータにアクセスする。で、このアプリを使ってスマホ本体にインポートし必要に応じてPCに接続&ダウンロードするのが一般的だ。がしかし、この方法を使うと撮影日時の情報(タイムスタンプ)は失われ、インポートした日時がファイル名となるファイルが作成される。exif等のファイルに埋め込まれたタイムスタンプで管理している関係上、この仕様はつらい。

 Go2本体にはUSBのような一般的な外部インターフェイスはなく、バッテリー兼用の専用ケースに入れることで、USB-Cコネクターが使えるようになる仕組みだ。USBさえ使えれば、直接PCに繋いでダウンロードしInsta360のPC版アプリを使うことでタイムスタンプ問題は回避できる。と、ここまでで一応の解決を見たのだが、1つだけ気になっている事があった。出先でGo2の内蔵メモリーが一杯になったらどうしよう? もちろんノートPCを持ち歩けば解決だが、荷物を増やしたくない。で、思いついたのが「スマホにダウンロードすれば良くない?」。だがスマホアプリでスマホに保存するとタイムスタンプ問題が…。そういえば最近のスマホはUSBがOTGに対応してるはず!。ノートPC用に購入してあったUSB-Cハブをスマホにつなぎ、そこにUSBタイプAtoCケーブルでGo2に繋いでみた。

OK,マスストレージデバイスとして認識された。これで行けるじゃん、と思ったのだが、USBハブと言う事で、やたらと使わないインターフェイスが付いている。それ以前に、ハブ自体の電力消費が大きすぎて電源を供給しないと使えない!やはりOTGケーブルが必要と言う事で、探してみると、ケーブルより小さい変換プラグがあった。

2個で899円(Amazon)

スマホにこれを挿して、充電用に普段持ち歩いているケーブルでGo2に繋げばスマホにダウンロードできる。

Insta360Go2をマスストレージデバイスとして認識

スマホには256GBのSDXC入れてあるから十分だろう。

Insta360 Go2 の購入をキッカケに色々な問題が露呈した件。

Insta360 Go2(以下、Go2)を使い始めて、色々な問題に直面した。前にも書いたタイムスタンプ問題だが、更に様々な事がわかった。Go2の静止画は.inspという拡張子のファイルになっていて、アプリを使わないとjpegに落とせないのだが、androidアプリを使うとタイムスタンプが無くなってしまうことが判明。ちなみに、元データとなる拡張子inspのファイルは実際には半天球jpegファイルになっていて、丸い画像ではあるが、普通のフォトビューアで見ることが出来た。

これをアプリを使って変換すると、樽形歪の少ない広角写真として切り出される。この時にInsta360アプリのWindows版を使えばタイムスタンプが保持されたjpegファイルが出力される事がわかった。結局、Go2をUSBでWindowsPCに繋ぎ、動画(.mp4)は「リニアモード」で撮影しているので、そのままダウンロード、静止画(.insp)はアプリを経由してjpegにエクスポートするという方法に落ちついた。

写真を整理していると、更に別の問題にも遭遇した。過去に1つのイベントで複数に分かれていた動画を繋いで1つのファイルにまとめた物があったのだが、これにタイムスタンプが埋め込まれていない事が判明。ファイル編集を行った際にタイムスタンプが消えてしまっていたのだ。ファイル名を日付(年月日)名にしていたので、これを使ってタイムスタンプを埋め込めないかと調べてみると、ffmpegを使えばなんとか出来そうな事が判明。ファイル名からタイムスタンプ文字列を作り、これをffmpegの引数に与える事で、何とか埋め込みに成功した。更に静止画にもタイムスタンプ無しの物が大量に見つかり…。

ffmpeg -i inputFile -c copy -metadata creation_time="2012-10-31T00:00:00.000000Z" outputFile

今までは、jheadというアプリをタイムスタンプの校正に使っていたので、これでできないかとやってみたのだが、タイムスタンプが書かれていないファイルにタイムスタンプを追加する事はできなかった。困った…。さがしてみるとexiftoolというアプリを発見。このアプリ、タイムスタンプを追加するとオリジナルファイルは別名でバックアップして新たにタイムスタンプを追加したjpegファイルが生成された。素晴らしい。

exiftool -CreateData="2012:10:31 12:34:56" inputFile

更に過去に保存してあった動画に、拡張子がm4vのかなり大きなサイズの物がある事が判明。ffmpegのデフォルトの設定でmp4にコンバートしてみると画質の劣化も殆ど無いのに1/3位のサイズになったので、これを採用。

と、ここまでやって確認のためにPS3のメディアプレイヤーで再生してみる。とGo2で撮った動画が見られない。

ん?破損データ

では、PS4ではどうだろうか?。スマホやWindowsPCでは問題なく再生できることは確認済だ。PS4のメディアプレイヤーを立ち上げて見てみると、何と上下が逆さまになって映像が表示された!。早速ffprobeという(ffmpegのサブセット版?の)情報表示ツールに掛けて上下反転しない過去の動画と比べてみると、rotate = 180という属性が付いていることが分かった。もしや?と思いGo2を横向きや逆さまで撮影してみると、このrotate属性が90や270(逆さまのときは0になっているためかrotate属性は無い)になっていた。ということは、この値を基にしてローテートさせれば良いのではないか。ffmpegに動画を回転させるオプションがあったので、rotate属性を基に適宜回転させればいいだろうと思いついたが、もっと手間のかからないオプションを発見。

ffmpeg -i inputFile -c:a copy outputFile

-c:a を使うとrotate属性から所望の回転をしてファイルを出力してくれる。回転させた動画をPS4で再生させると、すべてのカメラ向きで正しく再生できた。もしや、と思い淡い期待でPS3でも再生してみると、問題なく再生できた。rotate属性が有るだけで「破損データ」扱いなの?

結局、

  • 過去データのタイムスタンプ付け直し
  • Go2のファイルはWindowsPCで取り出し
  • renameアプリ(スクリプト)作成
  • ffmpegで動画はすべてmp4に変換
  • Go2で撮った動画の適宜回転

を行い、ようやくバックアップ作業の準備が完了した。あとはNAS(時間がかかる)とリムーバブルHDDにバックアップしておしまい。