FFmpegは、動画と音声を記録・変換・再生するためのフリーソフトウェアです。Linux にも画像編集ソフトはいろいろありますが、殆どのソフトが内部で、ffmpeg のライブラリを利用して動画、音声の加工をしています。ffmpeg のオプションは難解で、動画のフォーマットや解像度を変更するにはある程度、動画、音声フォーマットの知識が必要なので、細かい操作が必要な場合は、GUI ソフトを使っての編集をお勧めしたいと思いますが、動画のデータから一部分を切り出すのであれば ffmpeg コマンドを使った方が簡単です。
FFmpeg は以下のコマンドでインストールします。
$ sudo apt -y install ffmpeg
動画からデータを切り出す前に、まずは入力元も動画の情報を -i オプションを使って知ります。
$ ffmpeg -i input_movie.m4v
:
Duration: 00:22:03.90, start: 0.000000, bitrate: 1072 kb/s <- 動画の長さ
Chapter #0:0: start 0.000000, end 1323.405000 <- 開始時間と終了時間
Metadata:
title : Chapter 1
Stream #0:0(und): Video: h264 (Main) ・・・・・・・・・・ 23.98 fps, 23.98 tbr, 90k tbn, 180k tbc (default) <- 23.98 fps 一秒間のフレーム数
:
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 160 kb/s (default) <- 第一音声 音声マップが 0:1(eng)
Metadata:
creation_time : 2019-04-01T14:19:54.000000Z
handler_name : SoundHandler
Stream #0:2(jpn): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 160 kb/s <- 第二音声 音声マップが 0:2(eng)
撮影した動画の一部分を抜き出して写真としてプリントアウトしたい時、抜き出す始点と終点を指定して以下のように抜き出します。
$ ffmpeg -i input_movie.m4v -ss 100 -t 1 -r 10 out_%06d.jpg
$ ls
out_000001.jpg out_000004.jpg out_000007.jpg out_000010.jpg
out_000002.jpg out_000005.jpg out_000008.jpg out_000011.jpg
out_000003.jpg out_000006.jpg out_000009.jpg out_000012.jpg
-i input_movie.m4v : 入力動画
-ss 100 : 抜き出し始点秒 (開始から100秒目から)
-t 1 : 抜き出し秒数 (1秒)
-r 10 : 1秒あたり何枚抜き出すか (入力元のフォーマットにより抜き出せる枚数が異なります。)
out_%06d.jpg : jpeg で[out_000001.jpg]から連番で書き出し
動画から音声のみを切り出す場合は、以下のように行います。一つの動画な中には、1つの映像に対して、英語、日本語など複数の音声データが入っているものもあるので、-map オプションで 音声マッピングの位置を指定して抜き出します。
$ ffmpeg -i input_movie.m4v -map 0:1 output_audio.jp.mp3
$ ffmpeg -i input_movie.m4v -map 0:2 output_audio.en.mp3
撮影した動画が逆さまだったり縦になったりした場合は、-vf (video filter) と transpose オプション を併用すると回転させる事もできます。
$ ffmpeg -i input_movie.m4v -vf transpose=1 output_movie.m4v
transposeオプション
0 : 90度反時計回りに回転したのち上下反転
1 : 90度時計回り
2 : 90度反時計回り
3 : 90度時計回りののち上下反転