旅行などでビデオを撮る手段として、8ミリビデオやDVD-RAMなどを使っていた頃は良かった。何が良かったかと言うと、撮った物(コンテンツ)の管理だ。テープなりディスクなりで撮ったものは、連続して保存されているため、そのまま再生すれば時系列に従って連続して再生できる。いつの頃からか、SDカードに録画するようになったのだが、動画がカット毎に1つのファイルに分断されているため、そのままでは連続再生できない。出来るプレーヤーも有るかもしれないが。結果、見るのも面倒なのでほとんど再生されることもなく死蔵状態になる。
nasneから写真やビデオのバックアップを引き上げたついで?に、大量にある動画の断片の連結に手を着けることにした。
ところで、写真の整理やバックアップの作業はWindowsPCは使わずもっぱらubuntuPCを使っている。写真の場合はjpgファイルに埋め込まれたexifの時間情報を調整して、これを基にファイル名をつけ直してバックアップして終了だ。時間情報のつけ直しから整理までの手順は、
- カメラからデータを取り込む前に、電波時計を撮影しておく。
- この写真の時間情報をexifから読み出し、カメラの時計との時間差を出しておく。もちろん出先でカメラの時刻を秒まで正確に合わせればこの作業は不要なのだが、秒まで合わせるのは結構面倒だ。タイミングによっては最大59秒待たなければならないし。しかもカメラが何台も…
- exifのタイムスタンプを弄れるコンソールアプリ、jhead でまるごと時差修正する。詳しくは書かないが、例えば電波時計が12:34:56の時の写真のexifタイムスタンプが12:34:40だったら、jhead -ta+0:0:16 *.jpg などとして実行すれば、そのディレクトリのjpgファイルに埋め込まれたタイムスタンプが16秒加算される。(-taオプションはtime adjust)
- 全部のカメラで同様に修正し、exifタイムスタンプでファイル名をリネームするアプリで全ファイル名を更新。カメラが一台ならば多少時間が狂っていても良いのだが、複数のカメラの場合、スライドショーで見ると、撮ったカメラによって時間が前後してシーンが行ったり来たりしてしまう事になる。
と、まあこんな感じの作業を撮影イベント毎にやっている。面倒だが。
動画の場合にも同様の問題があり、しかも撮影時刻が重なる場合、同じ時刻の違う被写体の動画が存在する可能性もある。撮影開始時刻でファイルを並べ替えるだけでは対応しきれない。大量の動画カットから正しい時系列の一本の動画を作るのは無茶苦茶手間がかかる(自動化できない)ので諦めることにした。
本題に戻ろう。PS4で再生できないファイルがあることに気づいたのは、ある程度ファイルを連結してからだった。連結後のファイル確認は作業しているPCで行っていたが、DLNAサーバー(ラズパイのOMV)の動作を確認しようとしてPS4のメデイアプレーヤーで再生してみると、古い動画がことごとく再生できない。追って行くと2007年のある時点を境に再生できないファイル(Xacti C1で撮影)が有ることがわかった。連結作業中のPCで連結前の動画のプロパティを見てみると、使っているコーデックには2種類あり、再生出来ないのはM4V、再生できるのはH.264だった。どちらかだけの連結はエラーなく連結され、しかもPCでは当然のごとく再生できてしまうので問題には気が付かなかった。
連結にはffmpegという、超有名なアプリを使い、画質が落ちないように再エンコードしないオプションで連結していた。ここまでは自動的にディレクトリをなめてファイルリストを作成してシェルスクリプトでバッチ処理できていたのだが、再エンコードしない設定だと異なるコーデックや解像度のカットを繋ごうとするとエラーや警告が発生する。警告が出たファイルを再生すると、途中で画像が進まなかったり時間情報のおかしなファイルになっていた。20年近く溜め込んだ大量の動画カットを処理するのでなるべく自動化したいところだが、ffmpegでどこまで出来るのか調べるのも面倒になり、ダメな奴だけ手作業で対応することにした。で、これに使ったのがshotcutというアプリだ。linux(ubuntu)版を使ったがwindows版も有るようだ。これにファイラーで複数選択した動画カットをぶちこめば、コーデックや解像度、フレームレートの違いも関係なくH.264化してくれる。もちろんファイル名はタイムスタンプにリネーム済みなので自動的に時間順に並ぶ。まあ再エンコードされてしまうが致し方ない。裏で連結作業中でもジョブを積んで行けるので結構作業がはかどる。夜に日付毎にジョブを積んでおく(20個位?)と、だいたい朝には終わっていた。何だかんだで三日位で連結作業は完了した。ffmpegだとカットは全く見ないで作業する事になるが、shotcutはGUIアプリと言うと事もあり、入力したカットのサムネイル画像が表示される。この時に、真っ黒い画像や明らかにおかしいファイルを削除出来るので、ffmpegよりは手間は有るがメリットもある。
後はすべての連結済みファイルを確認して大量の元動画(連結前)を削除できればスッキリするのだが…