おはやし日記

テーマ……バイク←プログラミング←旅

TSファイルをmp4にして結合する

こんにちは。モンキー125に中華ドラレコをつけました。取り付けについては後にして、とりあえず映像の処理について備忘録

ドラレコ

これを買いました。もともとはミ○バサンコーワのにしようと思ってたけど、値段が…………。

これも検討したけど、ハンドル周りがごちゃつくかなって思ってやめました。

ファイル形式

次のような階層構造になっています。

|-Event
|-Normal
|    |-F
|    |    |-FILE220228-163417-000067F.TS
|    |    |-FILE220228-163517-000068F.TS
|    |    |-FILE220228-163617-000069F.TS
|    |    |-...
|    |    
|    |-R
|    |    |-FILE220228-163417-000067R.TS
|    |    |-FILE220228-163517-000068R.TS
|    |    |-FILE220228-163617-000069R.TS
|    |    |-...
|
|-Photo
  • FILE ... 通常録画はNormalフォルダに入って頭にFILEがつく。緊急録画はEventフォルダに入ってEMERがつく。
  • 220228 ... 西暦下二桁+月日
  • 163417 ... 録画開始時刻
  • 000067 ... 通し番号
  • F ... 前がF、後ろがR

結合

環境はmacOSです。

FFmpegを使う

jp.videoproc.com

homebrewは入っていたので

$ brew install ffmpeg

でインストール。

作業する階層はNormalフォルダを想定する。

例として特定の日付220228の前カメラファイルを全結合する(実用上は途中1日の中で録画が途切れるので細切れで指定しなければならないが)。

ファイル名手打ちでやるとこんな感じ

Normal$ $ ffmpeg -i "concat:F/FILE220228-163417-000067F.TS|F/FILE220228-163517-000068F.TS|F/FILE220228-163617-000069F.TS" -c copy 220228.mp4

これでNormal/220228.mp4が作成される。

|で区切ってファイル名を列挙する。

ここでファイル名をテキストファイルにして一括指定するワザがある

trac.ffmpeg.org

# Normal/202228.txt
file 'F/FILE220228-163417-000067F.TS'
file 'F/FILE220228-163517-000068F.TS'
file 'F/FILE220228-163617-000069F.TS'

この形式のテキストファイル(#始まりの行はコメントとして無視される)を作り

Normal$ ffmpeg -f concat -i 202228.txt -c copy 220228.mp4

としても同じ動作をする。

さらに、テキストファイルの作成を自動化するには

Normal$ printf "file '%s'\n" F/FILE220228* > 220228.txt

とすれば220228の前カメラファイルの一覧Normal/220228.txtが作成される。

おわり

結合の境目で変に途切れることがなかったのは良かった。単純に結合すれば一応観れるものができる。

TSファイルからGPSのログだけ引き抜きたいんやが……調べてみます。おわり

プライバシーポリシー ・お問い合わせはこちら