2014年9月19日(金)SONY PlayMemories Home 「マルチビュー作成」での GPS の扱い
どうやってるのか調べてみた。
- (2014年9月19日(金) 午後8時41分52秒 更新)
- Tweet
GPS情報を合成できるのがHDR-AS100Vの魅力の一つ。
意外と単純なGPSとの連携
HDR-AS100V では、GPS ログは、動画とは別のフォルダに、NMEA 0183フォーマットで保存されていて、拡張子は「LOG」となっている。このファイルは、PlayMemories Home で動画を読み込んだとき、動画と同じく日付別フォルダに整理されて、動画と同じフォルダに読み込まれる。
PlayMemories Home には、「ビデオの結合」というツールがあり、これで撮影した動画を結合できるのだけれど、撮影した動画といっしょに GPS ログも結合できるのは、連続して撮影された動画のみとなっている。要するに、ファイルフォーマットの都合で、カメラが勝手に分割保存した動画のみ、GPS ログを含めて結合できる、ということだ。
つまり、バッテリーを交換しようとして、ユーザーが撮影を停止させた後再開した場合、再開後のファイルは GPS ログを含めた形では、撮影停止前のファイルと結合することができない。
このことから、「マルチビュー作成」が GPS 情報を合成するとき何をやってるのかがわかる。「マルチビュー作成」は、動画ファイルの作成時と GPS の時刻情報を照らし合わせて、動画撮影開始から何秒後にこの座標、というのを、GPS ログから順を追って割り出しているようだ。
そのため、仮に GPS ログを結合してしまうと、動画ファイルの結合位置以降、撮影停止時間の分、動画内の時刻が GPS ログの時刻とずれてしまい、動画内時刻と GPS の対応が崩れてしまう。それで結合できない、というわけなんだろう。
(でも、何分何秒後に動画ファイルが結合されていて、そこで時刻が何分何秒ずれる、という情報を記録しておけば、GPS 情報を合成することは可能だと思うんだけど。。。)
ただこの方法なら、撮影開始時間さえわかっていれば、どんな形式の GPS ログとも合成できるはずで、カメラ本体の GPS を使わず(携帯電波で位置情報を補正できる)スマホのアプリで GPS を記録したり、別の GPS ロガーで作成した任意の gpx ファイルなどを読み込んで、動画に GPS 情報を合成することもできそうだ。ぜひそんな外部GPS読み込み機能を追加してほしい。iMovie などでも GPS 情報の合成に対応してくれればいいな。
HDR-AS100Vの後に出た、より小型の後継機「アクションカム・ミニ」では、本体から GPS が取り除かれ、WiFiリモコン側で GPS を記録するようになった。WiFiリモコンなしで GPS 内蔵スマホ向けに専用アプリを作って対応することも可能だと思うから、スマホをリモコン替わりにする安いバージョンもそのうち出してほしい。そしたら追加で買っちゃうかも(笑)。
撮影を手動で一時停止してファイルが分割されてしまった場合は、ビデオを結合できても GPS ログは結合できない。
GPSログを無理矢理結合する方法
バッテリー交換で一時停止しても、GPS ログが結合できないというのは、ちょっといやだ。ということで、強引に結合する方法を考えた。要は、一時停止後の GPS ログが、一時停止前のファイルの1秒後から始まるようにすれば、動画と位置情報の対応を崩さずに、GPS情報を合成できるはずだ。そのかわり時刻表示はずれる。
で、GPS ログの時刻を前のファイルの1秒後から始まるよう書き変える MacOS X 用ドロップレットを作った。以下はくれぐれも自己責任で!
とりえあず、GPS ログ抜きで「ビデオの結合」を行って…。
「GPS LOG 結合」に結合したビデオに対応する LOG ファイルをまとめてドロップ。
ビデオは連番で名前がついていくのだけれど、GPS LOG ファイルは、日付(YYMMDD)ごとに連番がつくようだ。連続して撮影した動画の LOG ファイルは、(1)..(2)..(3) と連番がつく。だいたい順番通りなので、順番から類推してビデオに対応する LOG ファイルを選ぶ。
すると「Merged.LOG」という名前のファイルができるので、これを結合したビデオと拡張子を除いて同じ名前にする。
ここでは「MAH00046 (1).LOG」とした。
これだけでは、結合した GPS ログを認識してくれないので、動画ファイルがあるフォルダにある「.HashTable.xml」という不可視ファイルをテキストエディタで開き、下記のようにファイル情報を修正する。
<key>MAH00046 (1).mp4</key>
<dict>
<key>DateCreated</key>
<date>2014-09-13T19:26:10Z</date>
<key>EditFunction</key>
<integer>9</integer>
<key>FileSize</key>
<integer>16785271806</integer>
<key>HashValue</key>
<string>......</string>
</dict>
GPSTrack を追記。「2304」にどういう意味があるのかは不明。
<key>MAH00046 (1).mp4</key>
<dict>
<key>DateCreated</key>
<date>2014-09-13T19:26:10Z</date>
<key>EditFunction</key>
<integer>9</integer>
<key>FileSize</key>
<integer>16785271806</integer>
<key>GPSTrack</key>
<integer>2304</integer>
<key>HashValue</key>
<string>......</string>
</dict>
で、結合した GPS ログを認識するようになる。以上あくまでも自己責任で。質問にもお答えしかねます。
バグいろいろ
PlayMemories Home の「マルチビュー作成」にはいくつかバグがあるようだ。ひとつは GPS ログが0時をまたぐとき、0時以降のGPSログを合成できない。これはLOGファイルを開いて、0時以降の時刻を24時..25時..と修正すると正常に処理する(^^;。
もうひとつ、「ビデオの結合」または「ビデオの切り出し」を経た動画ファイルでは、GPS情報を合成したとき日本時間ではなくグリニッジ標準時間になるバグがある。これは治し方がわからなかった。とりあえず、「~/ライブラリ/Application Support/PMH Mac/PMHDatabase.sqlite」に、ファイルと作成時の対応などが記録されていることがわかったのだけれど、このデータを修正しても日本時間表示にはならないようだった。
動画ファイルとGPS LOGファイルの対応がどこに記録されているのかもよくわからないし、あとは SONY さんが修正してくれるのを待つばかり。
PMHDatabase.sqlite の中を見ると、結合したファイルに限って、作成時間の項目にグリニッジ標準時からの時差が書かれていないことがわかる。
Comments.
Trackbacks.
更新情報
Recent Entries.
-
2017年8月24日(木)
-
2017年8月24日(木)
-
2017年8月23日(水)
-
2017年8月22日(火)
-
2017年6月12日(月)
-
2017年3月29日(水)
-
2016年10月30日(日)
-
2016年10月29日(土)
-
2015年12月22日(火)
-
2015年10月25日(日)