動画の分割や変換、結合コマンド 、高速再生、音声追加、ffmpeg.exe

マウス操作よりコマンドラインで操作の方が簡単
と思う。
分割や変換できるソフトをインストールして使うと
使い方はマウス操作だから変化を見ながら操作する
ヘルプを見ない質なのでしかたないが、難しい。
また、インストールしたアプリ名と分割や変換の機能があるかどうか連想できないのも問題だ。
つまり、
コマンドラインでの入力の方が慣れている世代なのです。

もともと、EverNoteに動画を置くのにサイズの問題があった。有料でも200MBまで。分割できるのだが、ffmpeg -i org.mp4 new.mp4とするだけでnewの方が半分になるので使っていた。

インストールというかファイルを取ってくる

さて、ffmpeg.exeはここから手に入れる。
https://www.ffmpeg.org/
手順は、以下。

  1. ダウンロードの英語(次図は翻訳)の文字画像をクリック
  2. ウインドウのマーク、画像(文字でない)をクリック
  3. ここでは下側の「BtbN」をクリック

令和6年1月11日時点

(tar.bz2?実際ダウンロードファイルはzipだった)
zipファイルを解凍するとbinフォルダに3つのファイルがある。

ffmpeg-master-最新-win64-gpl.zipを選ぶ。解凍してbinフォルダに以下の3つがあればok。このffmpeg.exeファイルはサイズは大きいがこの


.DLLの拡張子のファイルが別に必要な「Linking」とか「Shared」ではなく、Staticを選択する。Static付きのファイルが無かったらShared無しを選ぶ。

解凍した状態で以下のようにLibフォルダがあり、.DLLなどがいっぱいあるならffmpeg.exe単体では動かない。

以下のようにLibフォルダがあるとffmpeg.exeの他に必要なDLLもコピーする必要がある。ffmpeg.exeファイルのサイズは、200kB以下と小さいのでffmpeg.exe単体では動かない。

以下ならコピーするファイルが多くなる。ファイル名にsharedって付いてます。

\は¥のこと
ffmpeg.exeをc:\windowsフォルダに入れておくとどのフォルダからも実行できるが、削除したくてもどれかわからなくなる。
とりあえず、自分しか使わないから以下に置く。
C:\Users\take\

以下は使い方。
一度ffmpegを実行すると圧縮されるようだ。時間を指定するので一度ffmpegを実行する。
開始時間0秒から最後までa.mp4をb.mp4に出力する。

C:\Users\take>ffmpeg.exe -ss 0 -i a.mp4 b.mp4

C:\Users\take>ffmpeg.exe -ss 0 -i 入力ファイル  出力ファイル

分割

分割スタート(-ss 10)から1分(-t 60)まで。-tは-sの開始からどれだけ記録するか時間を入れる。-iで元の動画。出力先の動画は最後。50秒の動画ができます。

C:\Users\take>ffmpeg.exe -ss 10 -i 0.mp4 -t 60 1.mp4
 
-tは終了時間をメモしてスタート時間から引き算しないといけまえん。2回ffmpegを実行する必要はあるが、-to 00:01:25だと始めから1分25秒までの動画ができますので、もう一度-tを省略して-ss 00:00:10とすると開始10秒まえをカットした動画が得られます。
 
分割:1分から最後まで -tは無し。最後まで
C:\Users\take>ffmpeg.exe -ss 60 -i 0.mp4  2.mp4
.mp4ファイルのファイル名は、日本語は化けたりしてコマンド自体実行できなかったりなので適当な数字の名前0.mp4とか1.mp4などにしている。
変換:mp4からaviへ
C:\Users\take>ffmpeg.exe -i 0.mp4 0.avi
拡張子を変えるだけ。
 
C:\Users\take>ffmpeg -ss 開始秒 -i 入力ファイル -t 長さ(秒) 出力ファイル
 
-iの秒の開始を5分後とする場合は00:05:00が使える。-tの長さも2分なら00:02:00と書ける。
C:\Users\take>ffmpeg.exe -ss 00:05:00 -i 0.mp4 -t 00:02:00 1.mp4
それにしても、先に1度だけffmpegを実行して圧縮してから時間は決めた方がいい。

AviUtlでファイルを結合/追加読み込みすると「映像の音ズレ」をおこすことがある。解決策はいろいろあるようだがこのコマンドを使うのが簡単。

結合

結合したいファイルが1.mp4、次に2.mp4の順。以下のテキストファイルを作る。これ作らない方法は見つからない。

file 1.mp4
file 2.mp4

C:\Users\take>ffmpeg -f concat -i a.txt -c copy out.mp4

動画の種類を変える

エンコーダ、動画の種類を変えるのは、拡張子を指定するだけ。

ffmpeg -i aa.avi aa.mp4

VOBファイルもできる。変換ツールを求めて色々インストールする必要はありません。「vob mp4 変換」って検索してもffmpegはなかなか出ません。「動画変換フリーソフト」では何とか見つかるかどうかです。

スピードを早く、遅く

スピードを早くしたり、遅くしたり。ここでは1.5倍速の例

ffmpeg -i src.mp4 -vf setpts=PTS/1.5 -af atempo=1.5 dest.mp4

1.5を0.8にすれば遅くなる。

音声の追加はこちら(m(__)m)にあります。in.m4aが音声です。

ffmpeg -i in.mp4 -i in.m4a -c:v copy -c:a aac -map 0:v:0 -map 1:a:0 output.mp4

ほんま何でもできるんね。上下、左右反転回転もね。

エクセルを使った一括処理例