Advertisement
Guest User

Untitled

a guest
Jan 3rd, 2020
267
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.42 KB | None | 0 0
  1. @setlocal enabledelayedexpansion
  2.  
  3. rem このバッチを実行するカレントフォルダにffmpeg.exe、vpxenc.exe、元動画.mkv、keyframelist.txtを置くか.exeはパスを通す
  4. rem 中間ファイル元動画.mkvは全フレームキーフレームである必要がある。例えばUTvideoやrawvideo(YUV2)等にしておく。
  5. set keyframelist=%~dpn1.txt
  6. set srcvideo=%~dpn1.y4m
  7. set cq-level=35
  8. set color-space=bt601
  9. rem bt709 or bt601
  10.  
  11. mkdir "%~dp0%~n1_cql%cq-level%\"
  12.  
  13. rem 0,42,83,125…のようにキーフレームリストを1行に整形、変数%segmentframe%へ
  14. @for /f "tokens=1 skip=1 delims= " %%i in (%keyframelist%) do (
  15. set keyframe=%%i
  16. set /a keyframe-=1
  17. set segmentframe=!segmentframe!,%%i
  18. )
  19.  
  20. rem %segmentframe%の通りにsegmentフィルタで%srcvideo%を分割、%~dp0%~n1_cql%cq-level%\out%%d_%~n1_cql%cq-level%.aviとして保存(out0_%~n1_cql%cq-level%.avi、out1_%~n1_cql%cq-level%.avi、out3_%~n1_cql%cq-level%.avi...と連番出力になる)
  21. rem %~dp0%~n1_cql%cq-level%\segmentlist_%~n1_cql%cq-level%.txtにセグメントリストを出力。出力動画を列挙したテキストファイル、out0_%~n1_cql%cq-level%.avi[改行]out1_%~n1_cql%cq-level%.avi[改行]out3_%~n1_cql%cq-level%.avi[改行]...
  22. ffmpeg.exe -y -i %srcvideo% -f segment -segment_list %~dp0%~n1_cql%cq-level%\segmentlist_%~n1_cql%cq-level%.txt -segment_frames %segmentframe:~1% -reset_timestamps 1 -c copy %~dp0%~n1_cql%cq-level%\out%%d_%~n1_cql%cq-level%.avi
  23.  
  24. rem セグメントリストを1行ずつ読み込み分割した動画をエンコード。For内の変数%%iはout0_%~n1_cql%cq-level%.avi、out1_%~n1_cql%cq-level%.avi、out3_%~n1_cql%cq-level%.avi...と
  25. rem %%~niはout0、out1、out3...とファイル名のみに%%iが変数展開されている、バッチ 変数展開 ファイル名で調べて
  26. rem ビットレート上限なし2パス品質指定エンコード、一応上限は--min-q=20になる
  27. rem vpxencの--profile=2でyuv420p10le、色深度10bit指定vpxencはhighbitdepthビルドである必要がある
  28. rem データ量が大きくなる弊害よりもバンディングノイズが消える効果が大きいので特にバンディングが目立つアニメは10bitおすすめ
  29. @for /f "tokens=1 delims= " %%i in (%~dp0%~n1_cql%cq-level%\segmentlist_%~n1_cql%cq-level%.txt) do (
  30. rem 上書きする
  31. ffmpeg.exe -y -i %%i -pix_fmt yuv420p -f yuv4mpegpipe %~dp0%~n1_cql%cq-level%\%%~ni.y4m
  32. del %%i
  33. rem vpxenc.exe --threads=2 --end-usage=q --passes=2 --pass=1 --fpf=FirstPassStatisticsFile_%~n1_cql%cq-level%.fpf --best --target-level=40 --tile-columns=0 --tile-rows=1 --color-space=bt709 --output=FirstPassStatisticsFile_%~n1_cql%cq-level%.fpf %~dp0%~n1_cql%cq-level%\%%~ni.y4m
  34. rem vpxenc.exe --threads=2 --end-usage=q --passes=2 --pass=2 --min-q=26 --max-q=63 --cq-level=%cq-level% --aq-mode=%aq-mode% --fpf=FirstPassStatisticsFile_%~n1_cql%cq-level%.fpf --best --target-level=40 --tile-columns=0 --tile-rows=1 --color-space=%color-space% --disable-kf --lag-in-frames=25 --auto-alt-ref=1 --arnr-maxframes=15 --arnr-strength=6 --output=%~dp0%~n1_cql%cq-level%\%%~ni.webm %~dp0%~n1_cql%cq-level%\%%~ni.y4m
  35.  
  36. rem 改変者の個人的ドット絵向け設定
  37. rem vpxenc.exe --threads=2 --end-usage=q --passes=2 --min-q=26 --max-q=63 --cq-level=%cq-level% --aq-mode=0 --best --target-level=40 --tile-columns=0 --tile-rows=1 --color-space=%color-space% --disable-kf --lag-in-frames=25 --auto-alt-ref=1 --arnr-maxframes=15 --arnr-strength=6 --output=%~dp0%~n1_cql%cq-level%\%%~ni.webm %~dp0%~n1_cql%cq-level%\%%~ni.y4m
  38. rem 改変者の個人的アニメ向け設定
  39. vpxenc.exe --threads=1 --end-usage=q --passes=2 --min-q=26 --max-q=63 --cq-level=%cq-level% --max-intra-rate=3 --bias-pct=100 --undershoot-pct=100 --overshoot-pct=100 --aq-mode=3 --noise-sensitivity=4 --best --target-level=40 --tile-columns=0 --tile-rows=1 --color-space=%color-space% --disable-kf --lag-in-frames=25 --auto-alt-ref=1 --arnr-maxframes=15 --arnr-strength=6 --output=%~dp0%~n1_cql%cq-level%\%%~ni.webm %~dp0%~n1_cql%cq-level%\%%~ni.y4m
  40.  
  41. rem if not exist "%~dp0%~n1_cql%cq-level%\%%~ni.webm" mkdir "%~dp0temp\"
  42. rem if not exist "%~dp0%~n1_cql%cq-level%\%%~ni.webm" move "FirstPassStatisticsFile_%~n1_cql%cq-level%.fpf" "%~dp0temp\"
  43. rem if not exist "%~dp0%~n1_cql%cq-level%\%%~ni.webm" move "%~dp0%~n1_cql%cq-level%\%%~ni.y4m" "%~dp0temp\"
  44. rem del FirstPassStatisticsFile_%~n1_cql%cq-level%.fpf
  45. if exist "%~dp0%~n1_cql%cq-level%\%%~ni.webm" del %~dp0%~n1_cql%cq-level%\%%~ni.y4m
  46. )
  47.  
  48.  
  49. rem 1行目がffconcat version 1.0さっきのセグメントリストの行頭に"file "をつけ、拡張子_%~n1_cql%cq-level%.aviからwebmに変え%~dp0%~n1_cql%cq-level%\segmentlist_%~n1_cql%cq-level%.ffconcatとして保存
  50. rem out0_%~n1_cql%cq-level%.avi[改行]out1_%~n1_cql%cq-level%.avi[改行]out3_%~n1_cql%cq-level%.avi[改行]...がfile out0.webm[改行]file out1.webm[改行]file out3.webm[改行]...になる
  51. echo ffconcat version 1.0>%~dp0%~n1_cql%cq-level%\segmentlist_%~n1_cql%cq-level%.ffconcat
  52. @for /f "tokens=1 delims= " %%i in (%~dp0%~n1_cql%cq-level%\segmentlist_%~n1_cql%cq-level%.txt) do (
  53. echo file %~dp0%~n1_cql%cq-level%\%%~ni.webm>>%~dp0%~n1_cql%cq-level%\segmentlist_%~n1_cql%cq-level%.ffconcat
  54. )
  55.  
  56. rem %~dp0%~n1_cql%cq-level%\segmentlist_%~n1_cql%cq-level%.ffconcatを読み込み.webmを連結
  57. ffmpeg.exe -y -f concat -i %~dp0%~n1_cql%cq-level%\segmentlist_%~n1_cql%cq-level%.ffconcat -c copy %~dp0%~n1_cql%cq-level%\%~n1_cql%cq-level%_concated.webm
  58. pause
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement