動画の変換ならなんでもできる万能の動画編集ソフトffmpegでよく使うコマンドの紹介。
動画系、画像系を編集、変換できるソフトです。コマンドで実行する必要があるので取っつきにくいですが多くのソフトが実はこのffmpegを利用しています。
ffmpegよく使うコマンドの半自動化する
windows 10
windowsであれば大丈夫です。
nvidiaのグラボがあればなお良い。
実用的なffmpegコマンド
フレームレートを指定することで希望の間隔で画像を抽出できます。
ffmpeg -i movie.mp4 -r 15 output_%06d.png
連番から動画にするにはコーディック、ピクセルフォーマット、フレームレートを指定した方がいいです。 以下はdemo0001.jpg~demo0421.jpgの画像を使用し、60FPSの動画になります。
ffmpeg -framerate 60 -i demo.%04d.jpg -vcodec libx264 -pix_fmt yuv420p -r 60 out.mp4
動画サイズを横720px、縦比率に合わせる
ffmpeg -i movie.mp4 -vf scale=720:-1 out.mp4
ffmpeg -i 1.mp4 -i one.wav -map 0:0 -map 1:0 comp.mp4
ffmpeg -list_devices true -f dshow -i a
gifアニメーション
ffmpeg -i %1 -r 24 "%~n1.gif"
エンコード損失の指定0~100
lossless 0 損失を許可
画質について0=高画質,30低画質
-qscale 5
フォーマット
format=pal8
その他 rgb24 rgba yuv420p
アニメーションのループ回数
-loop 0
webp画像に変換
ffmpeg -i %1 -vcodec libwebp -lossless 0 "%~n1.webp"
webpアニメーション
ffmpeg -i %1 -vcodec libwebp -an -lossless 0 -qscale 5 -vf fps=8,scale=640:-1,format=pal8 -y -loop 0 "%~n1.webp"
使用する色の数
colors=16
apngアニメーション カラーパレットを作成しそれを参考に、apngで使う色を決定させている。
ffmpeg -i %1 -vf "scale=640:-1,split[m][a];[m]palettegen=max_colors=16:stats_mode=full[palette];[a][palette]paletteuse" -plays 0 -pix_fmt pal8 -r 8 -b:v 100k -y "%~n1.apng"
avif画像
ffmpeg -i %1 -c:v libaom-av1 -b:v 80k -r 8 -vf scale=640:-1,framerate=8 -pix_fmt yuv420p -aom-params lossless=0 -movflags faststart -g 80 -cpu-used 8 -y "%~n1.avif"
libsvtav1を使っている。libaomは遅すぎて実用的ではない。
rtsp
ffmpeg -re -stream_loop -1 -i "F:\rtsptest.mp4" -vcodec libx264 -bf 0 -f rtsp -rtsp_transport tcp rtsp://domain:8554/
rtmp
ffmpeg -re -stream_loop -1 -i "F:\rtsptest.mp4" -c:v h264_nvenc -c:a copy -bf 0 -f flv rtmp://domain/key
srt
srtはffmpegの古いバージョンffmpeg 4.0または、ソースからビルドをする必要があります。windowsの場合はビルドはあきらめましょう
ffmpeg -re -stream_loop -1 -i "F:\rtsptest.mp4" -c:v copy -c:a copy -f mpegts 'srt://domain:3000'
デモ映像testsrc
ffmpeg -f lavfi -re -i "testsrc=size=1280x720:rate=30" -c:v libvpx -f rtp "rtp://192.168.1.105:5004
デモ音声sine=frequency=800
ffmpeg -f lavfi -re -i "testsrc=size=1280x720:rate=30" -f lavfi -i "sine=frequency=800" -g 0 -c:v libx264 -c:a aac -strict experimental -f flv rtmp://test/publish
半自動化はbatファイルを作成します。
@ECHO OFF
cd /d %~dp0
:REPEAT
ffmpeg -i %1 ****ffmpeg command*****
if "%~2"=="" GOTO EXIT
shift
GOTO REPEAT
:EXIT
echo msgbox "ファイル名:%~n0",vbOKOnly,"終わったよ" > %TEMP%/ffmpegmsg.vbs & %TEMP%/ffmpegmsg.vbs
batファイルの細かい説明はここではしません。
以下二行だけ修正すれば大丈夫なはずです。 pause
ffmpeg -i %1 ****ffmpeg command*****
echo msgbox "ファイル名:%~n0",vbOKOnly,"終わったよ" > %TEMP%/ffmpegmsg.vbs & %TEMP%/ffmpegmsg.vbs
「echo msgbox」の部分は処理終了後にメッセージボックスを表示させています。
echoの行をただ削除してもいいのですが、処理が最後まで終わったのか分からないため「pause」にするのがいいと思います。
動画のコーディックを指定します。 指定しなくても勝手にやってくれるので最悪なくても問題はありません。
コーディックの指定を行います。
※「-vcodec」と「-c:v」は全く同じ意味です。
-vcodec h264_nvenc
-c:v libx264
h264コーディックが一般的なコーディックなのでこれさえ覚えておけば大丈夫です。 他に必要になるとすれば av1、vp9 、h265、 h265(nvidia)、vp8等を使用するかもしれません。
-c:v libsvtav1
-c:v libvpx-vp9
-c:v libx265
-c:v nvenc_hevc
-c:v libvpx
音声コーディックの指定 「-c:a」または「-acodec」 使い方
-c:a mp3
-acodec aac
音声コーディック一覧 mp3 aac opus libopus alibfdk_aac libmp3lame
こだわり等がなければこれでいいのではないか?
-c:v libx264
-c:a mp3
無音化
-an
音量調整
-af volume=12dB
ビットレート
-ab 128k
サンプリングレート
-ar 44100
ss初めの位置,終了位置 -t
-ss 200 -t 360
-pix_fmt yuv420p
質問や、間違いがありましたら、お気軽にどうぞ
※お名前とコメントの内容を入力してください。
※全てこのブログ上に公表されます。
※許可なく管理者によって修正・削除する場合がございます。 詳しくはプライバシーポリシーを参照ください