250x250以下の動画をgoogle photosにuploadするために変換した話
モチベ
ガラケーの頃の動画ファイルを発掘してgoogle photosに突っ込んで置きたくなった。
ところが「アップロードできません」と弾かれてしまう。
これを直してuploadしたかった。
原因
google photosでは動画ファイルは以下の条件で弾かれてしまうようだ。
- 250x250 未満の画素数
- 1GBを超えるファイル
今回の動画ファイルは
- 画素数が 320x240
- ファイルサイズは問題ない
という極めて惜しいところで弾かれていたようだ。
スクリプトを書く必然性
320x240 → 640x480 の変換しただけだと、ファイルの作成日時が変わってしまい、
google photosに入れた後に手作業で撮影時間を合わせる必要があり、非常に面倒である。
またexiftool
やffprobe
、mediainfo
から動画内部の撮影日を覗くことができる。
撮影日はなぜか世界時(+00:00)で記憶されていたため、時差を合わせる変換が必要だった。
そのため、ffmpegで動画の撮影日時を保ったまま画素数を増やすスクリプトを書いた
コードと説明
- 3行目でffprobeを利用して作成時間を取得している
- 4行目で時差を含めた日本標準時時間に直す
- 5行目で
ffmpeg
を利用した動画変換を行っている- metadataでcreation_timeを利用するのは、元の動画を処分した際でも撮影日がわかるようにするため。
- 6行目で作成、更新時間を撮影日に直している。
- この作業をすることでgoogle photosへアップロードした際に撮影日を認識してくれるようになる。
参考
Linuxコマンド集 - 【 touch 】 ファイルのタイム・スタンプを変更する:ITpro
Linuxコマンド集 - 【 date 】 日付や時刻を表示,設定する:ITpro
ffmpegでサイズやアスペクト比を指定 - opamp_sando's blog
html5 video - FFMPEG - Get creation and/or modification date - Stack Overflow
Insert Encoded & Taged Date • FFmpeg Support Forum