俺の外付けHDD

外付けHDDではなくはてなのサーバーラックの中でした

ffmpegでTSからサクッとカットしてgifをつくるバッチ

ちょっと面白いシーンはgifにしたくなるよね?なるよね?

::ffmpeg.exeのパス
set FFMPEGPATH=C:\DTV\ffmpeg\ffmpeg.exe
::一時ファイルを吐き出すフォルダのパス
set TEMPFOLDERPATH=C:\Users\Shibanyan\Desktop
::gifを書き出すフォルダのパス
set GIFPATH=C:\Users\Shibanyan\Desktop

:roop
echo カット開始時刻を入力
set /p SSH=
set /p SSM=
set /p SSS=
echo カット終了時刻を入力
set /p TTH=
set /p TTM=
set /p TTS=
set /p ASK=入力内容でよろしいですか?[y/n]:
if %ASK% equ n goto :roop
if %ASK% equ N goto :roop
echo 秒になおす計算
set /a SS= (%SSH%*3600 + %SSM%*60 + %SSS%)
set /a TT= (%TTH%*3600 + %TTM%*60 + %TTS%)
set /a T= (%TT% - %SS%)
echo 計算結果
echo %SS%
echo %TT%
echo %T%
timeout /t 5 /nobreak

::カットエンコ
"%FFMPEGPATH%" -y -ss %SS% -i %1 -t %T% -vf yadif=0:-1:1,decimate,pp=fa -g 240 -bf 16 -refs 16 -global_quality 27 -c:v h264_qsv -preset veryslow -b_strategy 1 -look_ahead 1 -look_ahead_depth 100 -aspect 16:9 -r 12000/1001 -s 640x360 "%TEMPFOLDERPATH%\%~n1_gif.mp4"
timeout /t 5 /nobreak
::パレット作成
"%FFMPEGPATH%" -y -i "%TEMPFOLDERPATH%\%~n1_gif.mp4" -vf palettegen "%TEMPFOLDERPATH%\%~n1_palette.png"
timeout /t 5 /nobreak
::エンコしたmp4とパレットpngからgifをつくる
"%FFMPEGPATH%" -y -threads 0 -i "%TEMPFOLDERPATH%\%~n1_gif.mp4" -i "%TEMPFOLDERPATH%\%~n1_palette.png" -lavfi paletteuse "%GIFPATH%\%~n1.gif"
timeout /t 5 /nobreak

テキストエディタ等にコピペして拡張子.batで保存して下さい。
カットしてgifにしたい動画ファイルをD&Dで処理を開始する。
予めFFMPEGPATH,TEMPFOLDERPATH,GIFPATHを指定しておくこと。
ffmpegで素早く動画をカットするには"開始時刻(秒)“と"開始時刻と終了時刻の差(秒)"が必要なんだけど,毎度計算するのは面倒だから…よく小学生並みの計算ミスをしてしまうのでDOSにやらせようということで。
例えば開始時刻が0時間26分50秒ならSSH=0,SSM=26,SSS=50と入力してあげると,それぞれ3600倍,60倍,(1倍)して足し算してくれるようになっている。答えは…えっと…
開始時刻と終了時刻を聞いた後に入力内容を確認するので,入力を間違えた場合はそこで"n"と入力してもらえればやり直せる。
ffmpegのオプションなんだけどこれは普段使っているものに修正してもらって構わない(上記設定だとデジタル放送のTSファイル向けだし,Haswell~じゃないと動かないよ)。ただあまりフレームレート-rや解像度-sを上げるとファイルサイズが巨大になってしまうので注意してほしい。

Copyright © 2016-2017 俺の外付けHDD All Rights Reserved.