これは、単純なシェルスクリプト、この場合はBashスクリプトを使用して実行できます。入力として空白で区切られたファイルがあり、出力ファイル名、開始タイムスタンプ、終了タイムスタンプが含まれている場合:
$ cat cuts.txt
foo.mp4 00:00:00 00:00:01
bar.mp4 00:01:20 00:02:00
次に、これを単純なループで読み取り、ffmpegコマンドを作成します。
while read -r filename start end; do
ffmpeg -i "input.mp4" -ss "$start" -to "$end" -c copy "$filename"
done < cuts.txt
これ-c copy
はエンコードせずにビットストリームをカットするだけです- 略記です-vcodec copy -acodec copy
(字幕もコピーします)。ビデオエンコーダー(例-c:v libx264
)およびオーディオエンコーダー(例:)を指定して、ビデオ-c:a aac -b:a 192k
を再エンコードできます。
より移植性の高い、しかしPython 3を使用した基本バージョン:
#!/usr/bin/env python3
import subprocess
with open("cuts.txt") as f:
for line in f.readlines():
filename, start, end = line.strip().split(' ')
cmd = ["ffmpeg", "-i", "input.mp4", "-ss", start, "-to", end, "-c", "copy", filename]
subprocess.run(cmd, stderr=subprocess.STDOUT)
注:Windowsでこれを実行する場合、ffmpegをPATHに追加するか、のようなフルパスを指定する必要がありますC:/Program Files/ffmpeg/bin/ffmpeg.exe
。