更新:2020-03-21
[追記 2018/05/07] 記憶をもとに後から書いたため間違いがありました。AvidemuxのTS Muxerは.m2tsではなく.tsのみの対応でした。そのため、実際はAvidemuxでキーフレームの時間を確認し、分割/結合はffmpegで行なっていました。ffmpegでの分割は、以下のコマンドで行えます。
ffmpeg -ss 01:43.870 -i in.m2ts -ss 0 -t 03:12.325 -c copy -map 0 out.m2ts
-ss 01:43.870
は開始時間です。-ss 0
は付けておいた方がいいみたい。-t 03:12.325
は動画の長さです。したがって、終了時間 - 開始時間を計算する必要があります。他の出力形式ならAvidemuxも有用ですので、原文はそのまま残しておきます。
[追記 2018/06/25] 切り出される長さはなぜか正確でないことがあります。ずれるときは-t
を0.1 sくらい調整してください。
[追記 2018/08/05] 続編を書きました。
[追記 2019/06/14] さらなる続編を書きました。
[追記 2020/03/21] (おそらく)完全版を書きました。
.m2ts形式のファイルの簡単な編集(分割/結合)を無劣化でしたかった。いろいろ(MurdocCutter/VidCutter等)試したが.tsにしか対応していなかったり不具合があったりしたため、「Avidemuxで切り出し > ffmpegで結合」という方法に落ち着いた。上の画像はMacだが、Linux/BSD/macOS/Windowsと幅広く対応している。ダウンロードはこちらから。
Avidemuxはオープンソースのフリーソフトウェアで、対応形式も幅広い。コンテナフォーマットはAVI/FLV/MKV/MPEG-2 PS/MPEG-2 TS/MP4/WebM等、ビデオコーデックはMPEG-1/MPEG-2/MP4/H.264/HEVC等、オーディオコーデックはAAC/AC-3/MP2/MP3/Vorbis等に対応している。
切り出し、分割
単に切り出すだけならAvidemuxでOKだ。Avidemux単体でも結合まで対応しているが、本目的、当環境ではうまくいかなかった。そのため、その後ffmpegで結合するという方法をとった。
無劣化編集にはキーフレーム単位での編集が必須である。キーフレームは、画面下の「フレームタイプ」が「I」となっていることで確認できる。キーフレーム単位での移動も↑/↓キーで簡単にできる。
「A」「B」と書いてあるボタンで切り出す範囲を指定したら、「Output Format」から「Mpeg TS Muxer (ff)」を選択し、保存する。
結合
ffmpegでの動画の連結は以下のコマンドで実行できる。
ffmpeg -f concat -i list.txt -c copy -map 0 out.m2ts
list.txtは、結合したい動画のパスを書き込んだ以下のような形式のテキストファイルである。
# comment
file 'in1.m2ts'
file 'in2.m2ts'