AVCHDの動画をffmpegで編集

sonyのビデオカメラで撮ったカンファレンスの動画セッションごとに切り出す作業を行ったのでメモ書き
iMoveでやろうとしたら固まってどうにもならなかったのでffmpegでやることにした

AVCHD

詳しい説明はwikiなどで確認して欲しいですがwindowsだとフォルダで表示されるけどmacOSからGUIで確認するとこんなアイコンになっていてちょっとめんどくさい

右クリックで `パッケージの内容を表示` で中を確認できる

$ ls -la
drwx------@ 6 username  0000000000   192  5 13 09:44 AVCHD

CUIで確認するとディレクトリになってるので簡単に確認できるので
長時間撮影していた動画を確認すると4.0GB単位で分割されていて一度連結する必要がある
あとサイズが大きい

$ ls -lah ./AVCHD/BDMV/STREAM
total 199493384
-rwx------   1 username  0000000000   4.0G  5 11 09:14 00000.MTS
-rwx------   1 username  0000000000   4.0G  5 11 09:37 00001.MTS
-rwx------   1 username  0000000000   4.0G  5 11 10:00 00002.MTS
-rwx------   1 username  0000000000   4.0G  5 11 10:23 00003.MTS
-rwx------   1 username  0000000000   4.0G  5 11 10:46 00004.MTS
-rwx------   1 username  0000000000   4.0G  5 11 11:09 00005.MTS

環境

  • macOS 14.4.1

  • ffmpeg version 7.0

セッションごとに切り出す

作業は `AVCHD` と同じディレクトリで作業を行う
やることはこの2つ

  • 動画を全て連結

  • セッションごとに切り出す

動画を連結する

動画一覧をmylist.txtに書き込んでffmpegで連結する
時間かかるけどディスク容量小さくするためにファイル形式を変更しておく

$ for file in `ls ./AVCHD/BDMV/STREAM/`; do; echo file AVCHD/BDMV/STREAM/$file >> mylist.txt; done
$ ffmpeg -f concat -i mylist.txt all.mp4

セッションごとに分割する

面倒だけど動画を確認してセッションの開始と終わりの時間を確認して
スプレッドシートに書き込んでいって切り出し用のコマンドを作成して実行していく

分割ように作ったスプレッドシート

D2の列はこんな感じにしてある

="ffmpeg -ss "&TEXT(B2,"[s]")&" -t "&TEXT(C2,"[s]") - TEXT(B2,"[s]")&" -i sotetsu_all.mp4 -c copy session_"&TEXT(A2,"00")&".mp4"

最後に

ffmpegを使ってみたかったというのと次やることがあればCLIで簡単にやれるようにするためにやってみたけどセッションの開始と終わりの時間を取得するのが一番めんどくさかった

ffmpegは形式の変換が時間かかるくらいで切り出しは数秒で終わるのでよかった
ノイズとかの調整は時間がある時に試してみたい

fortee というカンファレンス支援ツールには分割してくれる機能があるらしい、いつか使ってみたい

この記事が気に入ったらサポートをしてみませんか?