深緑の女魔術師の私的なブログ★彡

Welcome to my blog!

【動画加工の私的なメモ】ffmpegの私的なバッチファイル1号機 テキトーな動画圧縮(ドラック&ドロップ対応版)

2020/03/30
その他言語 0
深緑の女魔術師 バッチファイル ffmpeg 動画
深緑の女魔術師です。

完全なる自分用・・・

ってことで
テキトーに組んだバッチファイルです。

#ここに書いておけば、
#どのPCからもサルベージできる?

先に参考にしたブログ

Re:ゼロから始めるFFmpeg - 俺の外付けHDD

ffmpegって慣れてくるととっても便利なんだけど、最初は何がなんだかさっぱりでだと思うので、シンプルな使い方から応用まで解説する。



俺の外付けHDD!
ブログ名が素敵過ぎますね。
(ガチ褒めてます)


ffmpegバッチファイル その1
テキトーな圧縮(D&D対応)



前提
・ffmpeg を 環境変数に設定
(ffmpeg.exe のディレクトリを環境変数のPATHに通す)

仕様
・リサイズする(横幅だけ指定)
・圧縮する(crfにて劣化?)
・フォルダ全なめモードあり
・ドラック&ドロップにも一応対応
(現在5個までで追加は追記が必要)
・カスタマイズはソース加工

ソース

rem ここからソース

@echo off
rem 遅延なんちゃら有効
@setlocal enabledelayedexpansion

echo ------------------------------------------------
echo ffmpegの私的なバッチファイル1号機
echo テキトーな動画圧縮(ドラック&ドロップ対応版)
echo 作成日:20200330
echo 更新履歴
echo 20200330 深緑 新規作成
echo ------------------------------------------------

rem -------------------
rem 動画圧縮ツール
rem -------------------

rem -------------
rem 定数(変数)
rem -------------
rem ディレクトリ
rem 相対パスとする
set Cnst_Dir_Out=OUT\
set Cnst_Dir_In=IN\
rem ファイル関連
rem 入力ファイル名(INディレ限定)
set Cnst_File_Target=*.mp4
rem 出力ファイル名
set Cnst_File_Output=PuyoPuyo_eSports_
rem 適当なYYYYMMDD
set Cnst_File_YMD=%date:~-10,4%%date:~-5,2%%date:~-2,2%_
set FileCnt=1
set FileCntStr=000

rem -------------
rem パラメータ
rem -------------
rem 圧縮率(0 → 64 で高いほど劣化圧縮)
set Cnst_P_crf=35

rem リサイズ(横サイズ固定)
rem ffmpeg -i in.mp4 -vf scale=1280:-1 out.mp4
set Cnst_P_Size=scale=640:-1
rem (縦サイズ固定)
rem ffmpeg -i in.mp4 -vf scale=-1:720 out.mp4
rem set Cnst_P_Size=scale=-1:640
rem サイズ指定
rem ffmpeg -i in.mp4 -s 1280x720 out.mp4
rem set Cnst_P_Size=scale=1280x720

rem -------------
rem 引数で分岐
rem -------------
if "%~1" == "" (
echo 一括圧縮モード?
echo 対象ファイル名:%Cnst_File_Target%
echo 保存ファイル名:%Cnst_File_Output%
PAUSE
GOTO :ModeDir
) else (
echo 引数圧縮モード?
PAUSE
GOTO :ModeDrop
)

rem ◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆
rem 一括圧縮処理
rem ◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆

rem ここに飛ぶ
:ModeDir

echo -------------
echo 一括圧縮処理
echo -------------

rem 指定フォルダの指定ファイルをなめる
for %%A in (%Cnst_Dir_In%%Cnst_File_Target%) do (

rem 連番加工
set FileCntStr=00!FileCnt!
rem echo !FileCntStr:~-3!

rem 1個ずつ圧縮してく(ファイル名は定数指定)
ffmpeg -i %%A -crf %Cnst_P_crf% -vf %Cnst_P_Size% %Cnst_Dir_Out%%Cnst_File_YMD%%Cnst_File_Output%!FileCntStr:~-3!.mp4

rem カウンター
set /a FileCnt+=1
)

rem 処理終了(ジャンプする)
GOTO :EndWorld-2


rem ◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆
rem 引数圧縮モード
rem ◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆

rem ここに飛ぶ
:ModeDrop

echo -------------
echo 圧縮処理
echo -------------

rem 引数毎に圧縮
ffmpeg -i %~1 -crf %Cnst_P_crf% -vf %Cnst_P_Size% %Cnst_Dir_Out%s-%~nx1

rem 2個目以降はIF分岐
rem ファイルがなければジャンプする
if "%~2" == "" ( GOTO :EndWorld-2 ) else ( ffmpeg -i %~2 -crf %Cnst_P_crf% -vf %Cnst_P_Size% %Cnst_Dir_Out%s-%~nx2 )

if "%~3" == "" ( GOTO :EndWorld-2 ) else ( ffmpeg -i %~2 -crf %Cnst_P_crf% -vf %Cnst_P_Size% %Cnst_Dir_Out%s-%~nx3 )

if "%~4" == "" ( GOTO :EndWorld-2 ) else ( ffmpeg -i %~2 -crf %Cnst_P_crf% -vf %Cnst_P_Size% %Cnst_Dir_Out%s-%~nx4 )

if "%~5" == "" ( GOTO :EndWorld-2 ) else ( ffmpeg -i %~2 -crf %Cnst_P_crf% -vf %Cnst_P_Size% %Cnst_Dir_Out%s-%~nx5 )

rem エンドカードジャンプ先
:EndWorld-2
Echo 処理完了

PAUSE
rem ここまでソース


とりあえず、
私的用途では十分な感じ??

あとは動画結合のルール?

#ファイルリスト更新面倒・・・
#D&Dで結合したいトコです。

以上。
関連記事
スポンサーサイト



最後まで読んでくれてありがとう!

一応ランキングに参加?

にほんブログ村 スロットブログ スロット日記へ

Comments 0

There are no comments yet.