Guest User

ffmpegで16bit深度YUVでSSIMを計測すると1.0を超えてしまう問題の再現バッチ(修正版)

a guest
Jul 10th, 2017
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.83 KB | None | 0 0
  1. @echo off
  2. cd /d %~dp0
  3.  
  4. @echo.
  5. @echo Zeranoe版ffmpeg3.3.2で、16bit深度YUVでSSIMを測ると1.0を超えてしまうよテスト
  6. @echo (今回使ったのが3.3.2というだけで、以前のバージョンでも発生していた)
  7. @echo.
  8. @echo  ※注意
  9. @echo   Avisynthではなく、Avisynth+が必要です。
  10. @echo   うまくいかない場合は、Avisynth+をインストールするか、
  11. @echo   ffmpeg.exeと同じ場所にAvisynth+のAvisynth.dllを置いて下さい。
  12. @echo.
  13. @echo     http://avisynth.nl/index.php/Avisynthplus/Downloads
  14. @echo.
  15.  
  16. set ffmpeg=ffmpeg.exe
  17.  
  18. set inputAvs=ffmpeg_HighBitDepthYUVColorBar.avs
  19. set outfile=ffmpeg_out265.mp4
  20. set ssimLog=ffmpeg_HighBitDepthSSIM.txt
  21.  
  22. REM ちなみにこれを YUV420P16 に変えても、結果のSSIMは1.0を超えてしまう。
  23. set inFormat=YUV444P16
  24.  
  25. REM 入力するavsファイルの生成
  26. @echo ColorBars(pixel_type="%inFormat%").Trim(0,100).Info() > %inputAvs%
  27.  
  28. set crf=23
  29.  
  30. @echo ■■■↓ログここから■■■■■■■■■■■■■■■■■■■■■■■■■■■ > %ssimLog%
  31. @echo. >> %ssimLog%
  32. @echo  %inFormat%のソースを、libx265のcrf%crf%で >> %ssimLog%
  33. @echo  yuv420p(Main)にエンコードし、SSIMを計測します。 >> %ssimLog%
  34. @echo. >> %ssimLog%
  35. @echo ■■■エンコード■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ >> %ssimLog%
  36. @echo. >> %ssimLog%
  37.  
  38. @echo %inFormat%のソースを、libx265のcrf=%crf%でyuv420p(Main)にエンコードしています...
  39. %ffmpeg% -y -i %inputAvs% -c:v libx265 -crf %crf% -pix_fmt yuv420p %outfile% >> %ssimLog% 2>&1
  40.  
  41. @echo. >> %ssimLog%
  42. @echo ■■■SSIMの計測■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ >> %ssimLog%
  43. @echo. >> %ssimLog%
  44.  
  45. @echo %inFormat%でSSIMを計測中です...
  46.  
  47. REM 本当はoutfileもYUV444P16にあわせてから渡した方がいいのかもしれないけど
  48. REM ffmpegのオプション指定でどうやればいいかよくわからんでござる。
  49. REM まあYUV444P16で計測されてるように見えるし、outfileをavsでYUV444P16に
  50. REM 変換してから計測してもSSIMが1.0を超える事象は発生するので関係ないはず。
  51.  
  52. %ffmpeg% -i %inputAvs% -i %outfile% -lavfi "ssim" -f null - >> %ssimLog% 2>&1
  53.  
  54. @echo. >> %ssimLog%
  55. @echo ■■■↑ログここまで■■■■■■■■■■■■■■■■■■■■■■■■■■■ >> %ssimLog%
  56.  
  57. del %inputAvs%
  58. del %outfile%
  59.  
  60. @echo.
  61. @echo エンコードと計測が終了しました。以下にログを表示します。
  62. @echo.
  63.  
  64. type %ssimLog%
  65.  
  66.  
  67. @echo.
  68. @echo ログは上記の通りです。SSIMが1.0を超えてしまっています。
  69. @echo このログは %ssimLog% に記録されています。
  70. @echo.
  71.  
  72. pause
Add Comment
Please, Sign In to add comment