[Mac] コマンドラインで動画の一部を切り出す

動画の一部分のシーンを切り出したい状況になった。

ちなみに「切り出す」という言葉を思いつくのに苦労した。「分割」だと何等分かに分ける感じだし、「抽出」や「取り出す」だと一部の要素を取り出す感じ、「トリミング」なら不要部分を取り除くことに重点が置かれた言葉のような感じ。どれもしっくりこない。「切り出す」がかろうじていいかなと思えた。

環境:macOS Catalina Version 10.15.6(英語環境)

ffmpeg のインストールを済ませておいたうえで、以下のコマンドを実行すればいい。

$ ffmpeg -i input.mp4 -vcodec copy -acodec copy -ss 90 -t 10 output.mp4

オプションの説明
・-i input.mp4:元の動画
・-vcodec copy:動画を再エンコードしない
・-acodec copy:音声をを再エンコードしない
・-ss 90:90 秒目から
・-t 10:10 秒間

指定ディレクトリ内で一括変換するには以下のようなシェルスクリプトを実行すればいい(変換後のファイル名末尾に v2 と付与する場合)。

#!/bin/sh
DIRPATH=$1

for FILE in ${DIRPATH}*.mp4
do
ffmpeg -i "${FILE}"  -vcodec copy -acodec copy -ss 90 -t 10 "${FILE%.mp4}v2.mp4"

done

シェルスクリプトに trim.sh と名前をつけたとすると、$ chmod 755 trim.sh を実行して実行権限を付与、$ ./trim.sh で実行する。

参考:
ffmpeg で指定秒数を切り出して動画を時間で分割する – それマグで!
https://takuya-1st.hatenablog.jp/entry/2014/01/14/104752

サンプルで使って慣れる。ffmpeg の使い方。 – それマグで!
https://takuya-1st.hatenablog.jp/entry/20120225/1330189927