Screenshots: Difference between revisions

From BakaBT Wiki
Jump to navigation Jump to search
mNo edit summary
 
(11 intermediate revisions by 2 users not shown)
Line 11: Line 11:
#:* + high quality scaling for comparing releases with different frame dimensions
#:* + high quality scaling for comparing releases with different frame dimensions
#:* + AvsPmod provides efficient and convenient ways to compare multiple releases and batch export screenshots
#:* + AvsPmod provides efficient and convenient ways to compare multiple releases and batch export screenshots
#:* - rendering subtitles requires them to be demuxed from the release
# <span style="font-size:140%;"><span style="color:green;">Good:</span> Vapoursynth</span>
#:* + easy to set up
#:* + can use python scripts for automation of screenshots
#:* - rendering subtitles requires them to be demuxed from the release
#:* - rendering subtitles requires them to be demuxed from the release
# <span style="font-size:140%;"><span style="color:green;">Good:</span> MPC-HC + madVr</span>
# <span style="font-size:140%;"><span style="color:green;">Good:</span> MPC-HC + madVr</span>
Line 47: Line 51:
#:* - not practical doing screenshot comparisons (as a standalone tool), doesn't seem to be able to take frame numbers as seek points
#:* - not practical doing screenshot comparisons (as a standalone tool), doesn't seem to be able to take frame numbers as seek points


==<span style="color:green;">AvsPmod</span>==
===Required Components===
====Basic requirements====
{| class="wikitable"
|-
! '''Software'''
! '''Version'''
!
|-
| AviSynth
| 2.6
| [http://sourceforge.net/projects/avisynth2/files/AviSynth_Alpha_Releases/AVS%202.6.0%20Alpha%204%20%5B130114%5D/AviSynth_130114.exe Download]
|-
| AvsPmod
| 2.5.1 (+upd. library)
| [https://github.com/AvsPmod/AvsPmod/releases Download]
|-
|Premade Plugin folder
|See below
| [https://mega.nz/#!Zt8UzAYT!msIMxUCURSCLacYmjsgbp7jGI3C0nTBBAJPw7DceaE0 Download]
|-
| FFMS2
| r743 (10bithack)
| [http://nmm.me/vh Download]
|-
| FFMS2 (H265 compatible)
| ?
| [http://www.nmm-hd.org/upload/get~BLsLZwgj5ps/ffms2-6e0d654+a9fe004-ffmpeg-1e4d049.7z Download]
|-
| Dither Avisynth Tools
| 1.23.0
| [http://ldesoras.free.fr/src/avs/dither-1.23.0.zip Download]
|-
| Masktools2
| 2.2.10
| [https://github.com/pinterf/masktools/releases/download/2.2.10/masktools2-v2.2.10.7z Download]
|-
| xy-vsfilter
| 3.0.0.232 (cccp)
| [https://github.com/Cyberbeing/xy-VSFilter/releases Download]
|-
| SUPTitle
| 2.0.8
| [http://www.zachsaw.com/?pg=suptitle_pgs_avisynth_plugin Download]
|-
| FFInfoEx
| r1
| [https://mega.nz/#!ghNk2BZL!l203Hqya2RqziIidwLKS7uDHXwetfSKQCtpp4WiOHqA Download]
|}


This tutorial also assumes you're running a '''fully updated Windows 7/8/10''' machine with all recent VC++ distributables, .net Frameworks and whatnot. Things probably also work on Vista/XP and you might even get them to run with Wine on Linux, but you're on your own. The H265 compatible version should work as well as the old version, however if you have problems and don't need to compare H265 then use the old one. It's also recommended to use a fully up to date ffms2 version for H265, but if you're lazy the h264-10bit compatible+H265 compatible should do the job.
{{:AvsPmod (x86)}}


Now I'm keeping the old list of plugins around, but instead this time around I'll be compiling a simple plugin archive. Simply extract it into your folder and it ''should'' work.
{{:AvsPmod (x64)}}


====Additional requirements <span style="font-size:70%; font-weight:normal;">for the subtitle extraction script</span>====
==<span style="color:green;">Vapoursynth</span>==
{| class="wikitable"
Currently, we have not written a guide for this. However, theworm4002 could help you set this up if you are interested... that would probably also motivate them to put something better here :-P
|-
! '''Software'''
! '''Version'''
!
|-
| MKVToolNix
| 19.0.0
| [https://www.fosshub.com/MKVToolNix.html Download]
|}
 
Deprecated and Complicated extraction method:
{| class="wikitable mw-collapsible mw-collapsed"
|-
! '''Software'''
! '''Version'''
!
|-
| Windows Powershell
| 3.0
| [http://download.microsoft.com/download/E/7/6/E76850B8-DA6E-4FF5-8CCE-A24FC513FD16/Windows6.1-KB2506143-x86.msu Download (x86)] / [http://download.microsoft.com/download/E/7/6/E76850B8-DA6E-4FF5-8CCE-A24FC513FD16/Windows6.1-KB2506143-x64.msu Download (x64)]
<span style="font-size:80%;">Installed by default on Win 8, Win 7 SP1 users need to upgrade.<br />
No XP/Vista support.</span>
|-
| Microsoft .NET Framework
| 4.5
| [http://download.microsoft.com/download/B/A/4/BA4A7E71-2906-4B2D-A0E1-80CF16844F5F/dotNetFx45_Full_setup.exe Download] <span style="font-size:80%;">(Prerequisite for Powershell 3)</span>
|-
| MKVToolNix
| 6.3.0
| [http://www.downloadbestsoft.com/download/mkvtoolnix-unicode-6.3.0-1-setup.exe Download]
|-
| SIL FontUtils
| 1.00
| [http://scripts.sil.org/cms/scripts/render_download.php?format=file&media_id=TTFontUtils_1_00&filename=TTFontUtils_1_00.exe Download]
|-
| ExRelease
| 0.9.5
| [https://github.com/line0/ExRelease/releases/ Download]
|}
 
===Setting up the environment===
<ol><li>Install AviSynth</li>
 
<li>Open your AviSynth plugins directory in Explorer<br />
  Unless you changed the the AviSynth install location, your plugins directory should be<br />
  <span style="color:gray; font-size:80%; line-height:1em;">(enter these into your explorer location bar):</span>
  <ul><li>[On 64-bit Windows] <tt><span style="color:blue">%ProgramFiles(x86)%\AviSynth 2.5\plugins</span></tt></li>
  <li>[On 32-bit Windows] <tt><span style="color:blue">%ProgramFiles%\AviSynth 2.5\plugins</span></tt></li></ul>
  There should be only 3 files inside the directory: <tt><span style="color:blue">colors_rgb.avsi</span></tt>, <tt><span style="color:blue">DirectShowSource.dll</span></tt>, <tt><span style="color:blue">TCPDeliver.dll</span></tt></li>
 
<li>Open the Dither Avisynth Tools archive (<tt><span style="color:blue">dither-1.23.0.zip</span></tt>) and unpack the following files to your AviSynth plugin directory:
  <ul><li><tt><span style="color:blue">avstp.dll</span></tt></li>
  <li><tt><span style="color:blue">dither.avsi</span></tt></li>
  <li><tt><span style="color:blue">dither.dll</span></tt></li>
  <li><tt><span style="color:blue">mt_xxpand_multi.avsi</span></tt></li></ul>
 
  <span style="color:gray; font-size:80%; line-height:1em;">The docs folder inside the archive contains detailed documentation on the dither tools, so you might want to extract this to your AviSynth Docs directory or anywhere else you'll find it in case you need it later</span></li>
 
<li>Open the downloaded ffms2 archive and extract the contents into your Avisynth plugin directory
  <ul><li><tt><span style="color:blue">ffms2.dll</span></tt></li>
  <li><tt><span style="color:blue">ffmsindex.exe</span></tt></li></ul></li>
 
<li>Open the downloaded masktools archive and extract the correct <tt><span style="color:blue">masktools2.dll</span></tt> to your AviSynth plugin directory. If on XP use the file found in the x86_xp Folder, otherwise the x86 folder's file is correct. If you're running a 64bit setup use the x64 files.</li>
 
<li>Open the downloaded SupTitle archive and extract the contents into your Avisynth plugin directory
  <ul><li><tt><span style="color:blue">msvcp100.dll</span></tt></li>
  <li><tt><span style="color:blue">msvcr100.dll</span></tt></li>
  <li><tt><span style="color:blue">SupCore.dll</span></tt></li>
  <li><tt><span style="color:blue">SupTitle.dll</span></tt></li></ul></li>
 
<li>Open the downloaded AvsPmod archive and extract the <tt><span style="color:blue">AvsPmod</span></tt> folder to:
  <ul><li>On 64-bit Windows: <tt><span style="color:blue">%ProgramFiles(x86)%</span></tt></li>
  <li>On 32-bit Windows: <tt><span style="color:blue">%ProgramFiles%</span></tt></li></ul>
  Create a shortcut to <tt><span style="color:blue">avspmod.exe</span></tt>, or pin it to the taskbar/start menu</li>
 
<li>Copy the downloaded <tt><span style="color:blue">VSFilter.dll</span></tt> and <span style="color:blue">FFInfoEx.avsi</span> to your Avisynth plugin directory</li></ol>
 
===Getting started with screenshot comparisons===
<ol><li>Start AvsPmod and open the settings dialog (''Options > Program settings'')
<ol style="list-style-type:lower-latin;">
  <li>On the ''User Sliders'' tab check ''Hide slider window by default'' (The slider window usually only gets in the way)</li>
  <li> If you are using more than one screen, it's usually wise to check the ''Seperate preview window'' option, so you can have one screen dedicated to the video and one to the script</li>
  <li>On the Misc tab, uncheck the ''Show warning for bad plugin naming at startup'' option</li></ol></li>
 
<li>Go to ''Options > Snippets'' and click on ''Insert''. Insert the following script template as snippet and give it a tag you will remember<br />
<span style="color:gray; font-size:80%; line-height:1em;">(Script by Firesledge with a few additions)</span></li>
 
<tt>
vidfile="<span style="color:brown">VIDEOFILE</span>"
subfile=""
c1  = FFVideoSource (vidfile, enable10bithack=false)
c2  = FFVideoSource (vidfile, enable10bithack=true, varprefix="c1_")
w  = c1.Width ()
h  = c1.Height ()
wm4 = (w + 3) / 4 * 4
hm4 = (h + 3) / 4 * 4
b10 = (c2.Height () > c1.Height ())
<span style="color:brown">
target_width = w
target_height = h</span>
display_timecode = false
display_subtitles = true
group = "<span style="color:brown">GROUPNAME</span>"
matrix  = (c1_FFCOLOR_SPACE == 1) ? "709"
\        : (c1_FFCOLOR_SPACE >= 5) ? "601" : Dither_undef ()
par      = (c1_FFSAR_NUM > 0 && c1_FFSAR_DEN > 0)
\        ? Float (c1_FFSAR_NUM) / Float (c1_FFSAR_DEN)
\        : Dither_undef ()
tv_range = (c1_FFCOLOR_RANGE != 2)
(b10) ? c2 : c1
(StrLen(subfile) > 0 && display_subtitles)  ?
\                                                (b10) ? Dither_limit_dif16(DitherPost(mode=-1).TextSub(subfile).Dither_convert_8_to_16 (), thr=1.0, elast=2.0) : TextSub(subfile)
\: nop()
(VersionNumber () >= 2.6) ? last
\ : (b10) ? Dither_addborders16 (0, 0, wm4 - w, hm4 - h)
\        : AddBorders (0, 0, wm4 - w, hm4 - h)
(target_width != c1.Width() || target_height != c1.Height()) ? Dither_srgb_display (lsb_in=b10, matrix=matrix, par=par, tv_range=tv_range, w=target_width, h=target_height)
\ :                                                                                    Dither_srgb_display (lsb_in=b10, matrix=matrix, par=par, tv_range=tv_range)
cmt = (target_width > c1.Width() || target_height > c1.Height()) ? group + "\nupscaled" : group
FFInfoEx(vfrtime=display_timecode, cfrtime=false, frametype=false, x=last.width-6, y=4, cmt=cmt, align=9, shorttime=true)
</tt>
<li>If the subtitles are PGS subs (XYZ'''.sup''') you'll have to replace the ''TextSub'' plugin calls in line '''29''' with ''SupTitle''. The same thing is necessary if they are vobsub (XYZ'''.sub'''), in that case ''VSFilter_Vobsub'' will be necessary. Everything else stays exactly the same
<li>If the subtitles don't show, it may be because the video is in YV24 (4:4:4). Enforcing YV12 (4:2:0) should resolve that issue. You achieve that by adding the following parameters to the FFVideoSource lines. This shouldn't cause much of an issue in material that was originally YV12, but might affect the output for YV24 sourced material. At this point in time, virtually everything should be YV12. Thanks to sneaker2 for this snippet.
<tt>
vidfile="VIDEOFILE"
subfile=""
 
c1  = FFVideoSource (vidfile, enable10bithack=false, colorspace="YV12")
c2  = FFVideoSource (vidfile, enable10bithack=true, varprefix="c1_", colorspace="YV12")
</tt>
<li>Now that you're all set, let's load the videos to compare.
<ol style="list-style-type:lower-latin;">
  <li>Click into the empty script window and hit <span style="color:navy">F7</span> to get a list of your snippets. Since there's only the one snipped you just created, hit <span style="color:navy">TAB</span> to insert it</li>
  <li>Replace <tt><span style="color:brown">VIDEOFILE</span></tt> in the first line with the full path to an episode <span style="color:gray; font-size:80%; line-height:1em;">(e.g. Z:\ScreenCompare\ZSZS\[gg]_Zan_Sayonara_Zetsu bou_sensei_-_02_[DB36C966].mkv)</span> of the first release you want to compare and <tt><span style="color:brown">GROUPNAME</span></tt> in the last line with the appropriate group tag</li>
  <li>Hit <span style="color:navy">F5</span> to load (or refresh) the video. Loading a file for the first time might take a few seconds, since the file is being indexed first.</li>
  <li>Save the script</li>
  <li>Hit <span style="color:navy">Ctrl+N</span> or double click next to the current tab to open a new script tab</li>
  <li>Repeat from Step '''3a'''</li></ol></li>
 
<li>Syncing up the releases (easymode)
<ol style="list-style-type:lower-latin;">
  <li>Check if the video of all releases matches up, by going through them with Alt+1, Alt+2, Alt+3, ...<br />
  The best way to do is is to seek to the last frame before a scene change, check if it matches up across tabs, then seek to the next frame and check again<br />
  <span style="color:gray; font-size:80%; line-height:1em;">(Seek by using the arrow keys (<span style="color:navy">left/right</span>: 1 frame; <span style="color:navy">up/down</span>: 1 second) or clicking the timeline for larger time distances)</span><br /><br />
  '''Note: ''' You may find out that not all subsequent frames match up or worse, the releases running out of sync over time. If it's only single frames, just avoid using them for screenshots.
  In case of releases running out of sync, you're dealing with either missing sections or different frame rates. Refer to the <span style="color:gray">[Advanced Tutorial TBD]</span> on how to deal with those cases.</li>
  <li>Once all releases you want to compare are in sync, right click their tabs and add them to a single group. Make sure the ''Apply offsets'' and ''Offset also bookmarks'' options are checked.<br />
  <span style="color:gray; font-size:80%; line-height:1em;">AvsPmod will now remember the frame offsets between tabs and automatically seek to the right frames on a shared timeline.</span></li></ol></li>
 
<li><ol style="list-style-type:lower-latin;">
  <li>To reasonably compare screenshots, we need all frame sizes to be of the same resolution. You should have noticed any differences already while syncing up the releases.<br />
  If all resolutions match, skip this step. If they don't, find out the highest resolution by looking at the bottom right of the status bar.<br />
  <span style="color:gray; font-size:80%; line-height:1em;">The information will be in the following format: FrameWidth x FrameHeight (AspectRatio)  - Framerate fps - Colorspace</span></li>
<li>Take the largest width and height among the releases and find the following section in the scripts for all releases that need to be resized:
<pre style="color:brown">target_width = w
target_height = h</pre>
Replace <span style="color:brown">w</span> with the largest FrameWidth and <span style="color:brown">h</span> with the largest FrameHeight</li>
<li>Hit <span style="color:blue">F5</span> to refresh the video preview and confirm everything works as expected.</li>
</ol></li>
 
<li>Select frames for the screenshot comparison
<ol style="list-style-type:lower-latin;">
  <li>Find a frame suitable to convey significant information about an aspect of video quality.<br />
    Pick:
    <ul><li>one or two frames of a structure that represents what is on the screen most of the episode (to give a general idea about the video quality)</li>
      <li>frames from dark scenes</li>
      <li>high-detail frames / frames with fine structures</li>
      <li>frames with low contrast</li>
      <li>frames from high-motion scenes</li>
      <li>a frame or two from a fade-in/fade-out</li>
      <li>frames that display video artifacts in one ore more releases <span style="font-size:80%; line-height:1em;"><span style="color:gray;">(refer to </span>[http://forums.bakabt.me/index.php?topic=32193 this]<span style="color:gray"> thread on how to spot and identify video artifacts)</span></span></li>
      <li>at least one frame from the OP and one frame from the ED</li></ul>
  <span style="color:gray; font-size:80%; line-height:1em;">Try to get as many B-Frames as possible. Ideally you'd want matching frame types across the different releases.<br />In practice checking this gets more of a waste of time with each additional release you have to compare. Just try to keep the number of B-to-I comparisons low and make sure you don't pick only B-Frames for one release and only P-Frames for the other.<br />A very easy way to avoid this issue is to not pick frames by only looking at one release. This comes with the added benefit of you being more likely to spot video artifacts in ALL releases.<br />(Check the overlay on the top right of the video frame to find the frame type of the current frame.)</span></li>
  <li>Once you've decided on a frame, hit <span style="color:navy">Ctrl+B</span> to bookmark it.</li>
  <li>Repeat from '''6a '''for each additional frame<br />
  <span style="font-size:80%; line-height:1em;"><span style="color:gray">If you want to check the frames you already bookmarked, hit <span style="color:navy">F2</span>/<span style="color:navy">Shift+F2</span> to browse through your bookmarks</span></span></li></ol></li>
 
<li>Export screenshots
<ol style="list-style-type:lower-latin;">
  <li>Once you're done deciding on frames to screenshot (10-15 is a good number), it's time to export them to PNG.<br />
  Go to ''Macros > Save image sequence'' (make sure ''Select frames'' is set to "Bookmarks" and ''Output format'' to "*.png")</li>
  <li>Pick an output directory and basename.<br />
  I recommend using the basename format <tt>%06d_Groupname</tt>. This way your screenshots will (almost) always sort to comparison-friendly order by default. Make sure ''Add the frame number as suffix'' is checked when using <tt>%06d</tt>, otherwise it only counts up rather than inserting the current frame number.<br />
:::<span style="color:gray; font-size:80%; line-height:1em;">Example of Directory+Basename: Z:\ScreenCompare\Out\%06d_Zurako
  You may also want want to check the ''Use always this directory'' option since you need to run this macro for each release seperately.</span></li>
  <li>Click <span style="color:navy">OK</span>. You'll get a confirmation once the export is done.</li>
  <li>Repeat from step '''7a''' for every open tab/release</li>
  </ol>
</li></ol>
 
===Using MKVToolnix for subtitle extraction===
<ol><li>Run the MKVToolnix installer. If using the portable version: Extract the archive</li>
<li>The installer will recommend downloading gMKVExtractGUI (portable users: It can be downloaded seperately, just place it in the appropriate folder) at some point. Do that if you don't know what CLI MKVExtract is and how to use it. Probably also do it if you know, I find that it simplifies the extraction.</li>
<li>Run gMKVExtractGUI.exe</li>
<li>Drag and Drop the file(s) that you want to extract the suptitles of.</li>
<li>Select the tracks you wish to extract. Then click ''Extract''</li>
<li>That's it, the extracted files (on default settings) should be in the same folder as the source files. </li></ol>
===Setting up the ExRelease extraction script (Deprecated and Complicated)===
<ol><li>Open Notepad or a text editor of your choice and type <tt>;</tt>.</li>
 
<li>Install MKVToolNix and copy the path to the destination folder into your notepad document.
<ol style="list-style-type:lower-latin;">
  <li>Append a <tt>;</tt> to your notepad document. The contents should now look like this:</li>
  ;<span style="color:blue">C:\Program Files (x86)\MKVToolNix</span>;
</ol></li>
 
<li>Install FontUtils and make sure the ''Add installation directory to PATH'' option is checked</li>
 
<li>Remember your AviSynth plugin directory from the first tutorial? Copy its path to your notepad document and append another ";"<br />
Unless you changed the the AviSynth install location, your plugins directory should be<br />
<span style="color:gray; font-size:80%; line-height:1em;">(enter these into your explorer location bar to make them resolve to full paths)</span>:
  <ul><li>[On 64-bit Windows] <tt><span style="color:blue">%ProgramFiles(x86)%\AviSynth 2.5\plugins</span></tt></li>
  <li>[On 32-bit Windows] <tt><span style="color:blue">%ProgramFiles%\AviSynth 2.5\plugins</span></tt></li></ul>
Make sure you append the full path to your notepad document, so it looks like this:</li>
  ;<span style="color:blue">C:\Program Files (x86)\MKVToolNix</span>;<span style="color:blue">C:\Program Files (x86)\AviSynth 2.5\plugins</span>;
 
<li>Unpack the ExRelease archive to
  <ul><li><tt><span style="color:blue">%userprofile%\Documents\WindowsPowerShell\Modules</span></tt></li></ul></li>
 
<li>To make the tools you just installed available to the script and the script conveniently available from everywhere, we need to add their locations to your '''PATH '''environment variable
<ol style="list-style-type:lower-latin;">
  <li>Hit <span style="color:navy">Win+Pause</span> to open the System Control Panel</li>
  <li>Click on ''Advanced System Settings'' <span style="color:gray; font-size:80%; line-height:1em;">(on the left sidebar)</span>, which should open the ''System Properties'' Window</li>
  <li>Click on ''Environment Variables''</li>
  <li>Browse the ''System variables'' until you find the '''Path''' variable. Highlight it and click on ''Edit...''</li>
  <li>Click into the ''Variable value'' input field, and hit the <span style="color:navy">End</span> key to move the cursor behind the last entry (which should be your FontUtils path)</li>
  <li>Append the contents of your notepad document and hit <span style="color:navy">Enter</span></li>
  <li>Click ''OK ''on the ''Environment Variables'' and ''System Properties'' to save the settings</li>
</ol></li>
 
<li>Run Windows PowerShell (you'll find it in the programs menu)
<ol style="list-style-type:lower-latin;">
<li>Make sure you are running at least Powershell v3.0. Type
<pre style="color:brown">$PSVersionTable.PSVersion</pre>
into the command prompt and hit enter. If the number under ''Major ''says 3, you're good to go (continue with step '''8''')</li>
<li>If it doesn't, install
  <ul><li>[On 64-bit Windows] <span style="color:blue">Windows6.1-KB2506143-x64.msu</span></li>
  <li>[On 32-bit Windows] <span style="color:blue">Windows6.1-KB2506143-x86.msu</span></li></ul>
If the update fails with ''"The update is not applicable to your computer"'', you need to install the .NET Framework 4.5 (<span style="color:blue">dotNetFx45_Full_setup.exe</span>) first.<br />
<span style="color:gray; font-size:80%; line-height:1em;">You may need to restart your computer after installing Powershell 3.</span><br />
Open Windows PowerShell again and run
<pre style="color:brown">$PSVersionTable.PSVersion</pre>
to confirm you are now running version 3</li></ol></li>
 
<li>Next, we have to change the execution policy to allow running unsigned scripts. To do this, run
<pre style="color:brown">Set-ExecutionPolicy Bypass -Scope CurrentUser</pre>
and confirm with <span style="color:navy">Y</span>. With this preparations to run the ExRelease script are done.</li></ol>
 
===Using the ExRelease script to take screenshots with subtitles/typesetting===
The ExRelease script automates a number of thigs you'd otherwise have to do by hand:
<ul><li>Demuxes subtitles from .mkv files</li>
<li>Extracts attached fonts softsubbed releases <span style="color:gray; font-size:80%; line-height:1em;">(which are required to render the subtitles correctly)</span></li>
<li>Looks for typesetting inside extracted .ass subtiles and writes a text file, which can be imported as bookmarks in AvsPmod</li>
<li>Loads extracted fonts into memory to make them available to the subtitle renderer</li>
<li>Finds the highest resolution of the releases you want to compare</li>
<li>Writes an AviSynth script with all important parameters already set, so you can start taking screenshots right away</li></ul>
<br />
<ol><li>Open PowerShell</li>
<li>Move or copy all releases you want to compare with each other to a separate folder. The script works on whole directories, so every .mkv file in the folder is going to be processed.</li>
<li>Run the script by typing
<pre style="color:brown;">ExRelease "X:\SomePath\To Love Ru Darkness"</pre>
<span style="color:gray; font-size:80%; line-height:1em;">(Substitute for your comparison directory, of course.)
You can use the <span style="color:navy;">Tab</span> key to auto-complete directories or just type "<span style="color:brown;">ExRelease</span>" and drag/drop the folder into PowerShell to insert its path.</span>
The script will now process your files and also create indexes, so it's time to go to the fridge and grab a beer.</li>
 
<li>When the script is done it will ask you if you want it to load fonts now. Answer with <span style="color:navy;">Y</span> for yes.<br />
Fonts remain loaded in memory for the duration of the session <span style="color:gray; font-size:80%; line-height:1em;">(that means until you log out or shut down the computer)</span>.
<ol style="list-style-type:lower-latin;">
  <li><span style="color:gray; font-size:80%; line-height:1em;">In case you want to (continue) work on the screenshot comparison after a logout or reboot, run the script again with</span>
  <pre style="color:brown;">ExRelease "X:\SomePath\To Love Ru Darkness" -load</pre></li></ol></li>
 
<li>Open the generated .avs scripts <span style="color:gray; font-size:80%; line-height:1em;">(which reside next to the .mkv files)</span> in AvsPmod.<br />
<span style="color:gray; font-size:80%; line-height:1em;">If everything went right, all releases should display at the same resolution, subtitles should now be rendered on the frames, and the releases should now have the appropriate group tag next to the frame numbers.</span></li>
 
<li>To save you the effort of finding typesetting to compare, ExRelease has already done that for you.
<ol style="list-style-type:lower-latin;">
  <li>To import the found typesetting locations as bookmarks, click on ''Macros > Import bookmarks from file'' and pick the .TSChapters.txt saved alongside the release you are comparing.</li>
  <li>Repeat this for every other release you are comparing. <span style="color:gray; font-size:80%; line-height:1em;">This is important because you not only want to compare the TS group A did, but also the TS group B did and group a didn't.</span></li>
  <li>Take note that the typesetting detection is very crude and timecodes are somewhat inaccurate, therefore the typesetting may appear a frame before/after the bookmark or e.g. only starts fading in at the bookmark locations. Therefore it's vital to go trough the bookmarks and move them around to get useful screenshots. <span style="color:gray; font-size:80%; line-height:1em;">To remove a bookmark, just press <span style="color:navy;">Ctrl+B</span> at the bookmarked location (frame number in red)</span></li></ol></li>
 
<li>To unload fonts after you are done with your comparison, run the script with
<pre style="color:brown;">ExRelease "X:\SomePath\To Love Ru Darkness" -unload</pre></li></ol>
<br />
<span style="color:gray;">'''Addendum:''' The script offers a number of advanced parameters that let you customize your workflow. Run</span>
<pre style="color:brown;">Get-Help ExRelease -detailed</pre>
<span style="color:gray;">in PowerShell to display its internal help file.</span>


==<span style="color:green;">MPC-HC + madVr</span>==
==<span style="color:green;">MPC-HC + madVr</span>==
Line 460: Line 121:


=Hosting Images=
=Hosting Images=
You probably want to use [http://bakashots.me/ our image server].  If for some reason that doesn't suit you, take a look at these other options:


{{:Image hosts}}
{{:Image hosts}}

Latest revision as of 08:05, 31 December 2022

This article is aimed at providing useful information regarding adding screenshots to your description and the software used.

Adding screenshots to your description is necessary, as it's meant to preview the video and subtitle quality for the torrent. For that reason when taking screenshots they must be in source resolution, PNG (lossless) format, unless the video is anamorphic in which case they need to be in display resolution.

r10 - 2013-08-23

Taking Screenshots

  1. Recommended: AvsPmod (& AviSynth, Dither)
    Most flexible solution, but requires a few steps to set up.
    • + using Firesledge's script provided in this thread pretty much guarantees the screenshots to be the most faithful representation of the source
    • + high quality scaling for comparing releases with different frame dimensions
    • + AvsPmod provides efficient and convenient ways to compare multiple releases and batch export screenshots
    • - rendering subtitles requires them to be demuxed from the release
  2. Good: Vapoursynth
    • + easy to set up
    • + can use python scripts for automation of screenshots
    • - rendering subtitles requires them to be demuxed from the release
  3. Good: MPC-HC + madVr
    Easy to set up solution that doubles as THE high quality video playback solution on Windows, but not as convenient as method #1
    • + video quality on par with the AviSynth method
    • + easy to set up (install CCCP) and use (like a media player), doesn't require any demuxing or indexing
    • - does not supporting scaled screenshots for comparing releases with different frame dimensions
    • - not as well suited (or intended) as AvsPmod for more extensive comparisons, comparing releases side-by-side possible but cumbersome
  4. Good: mpv (-vo opengl-hq; use at least version 0.1.0)
    Cross-platform solution also available on Mac OS X and Linux, not as convenient as method #1
    • + easy to set up and use if you're familiar with the command line
    • + access to advanced configuration options and quite powerful video filters for a video player
    • - video quality very slightly inferior to methods #1 and #2
    • - not as well suited (or intended) as AvsPmod for more extensive comparisons, comparing releases side-by-side possible but cumbersome
  5. Avoid: MPC-HC + EVR CP
    Default setup when installing CCCP or MPC-HC/BE.
    • ! not a fault of EVR in and by itself, but an all too common error source: uses video "enhancement" features of your video card driver which actually destroys the video (and your screenshots) in several ways, including but not limited to:
      • fucking up colors,
      • adding ugly sharpening,
      • creating sugoi banding, and
      • other artifacts.
    If you absolutely have to use the EVR renderer for taking screenshots, make sure all video enhancement options of your graphics card driver are turned off
    • - possible pixel shift to the left (tested on recent NVidia drivers)
    • - slightly inferior video quality compared to madVr (defaults to bilinear chroma upscaling, random dithering using lav video decoder)
  6. Do not EVER use: VLC
    Atrocious video player with terrible video quality
    • - uses wrong matrix for RGB conversion (results in wrong colors)
    • - uses point upscaling for chroma planes
    • - introduces strong banding
    • - all the other bugs (including some that haven't been fixed in years) make it equally unsuitable media player. Seriously, stop using VLC!
  7. Do not use until further notice: FFmpeg
    Versatile command line video/audio processing tool unsuitable for taking screenshots
    • - incorrectly uses BT.601 matrix for all content (results in wrong colors)
    • - colormatrix filter causes strong banding
    • - uses point upscaling for chroma planes and ordered dithering (low video quality)
    • - not practical doing screenshot comparisons (as a standalone tool), doesn't seem to be able to take frame numbers as seek points


AvsPmod (x86)

Required Components

Basic requirements

Software Version
AviSynth 2.6 Download
AvsPmod 2.5.1 (+upd. library) Download
Premade Plugin folder See below Download
Old Plugin Links
Dither Avisynth Tools 1.23.0 Download
Masktools2 2.2.10 Download
xy-vsfilter 3.0.0.232 (cccp) Download
SUPTitle 2.0.8 Download
FFInfoEx r1 Download
assrender found to work better then SUPTitle in some cases Download

This tutorial also assumes you're running a fully updated Windows 7/8/10 machine with all recent VC++ distributables, .net Frameworks and whatnot. Things probably also work on Vista/XP and you might even get them to run with Wine on Linux, but you're on your own. The H265 compatible version should work as well as the old version, however if you have problems and don't need to compare H265 then use the old one. It's also recommended to use a fully up to date ffms2 version for H265, but if you're lazy the h264-10bit compatible+H265 compatible should do the job.

Now I'm keeping the old list of plugins around, but instead this time around I'll be compiling a simple plugin archive. Simply extract it into your folder and it should work.

Additional requirements for the subtitle extraction script

Software Version
MKVToolNix 19.0.0 Download

Deprecated and Complicated extraction method:

Software Version
Windows Powershell 3.0 Download (x86) / Download (x64)

Installed by default on Win 8, Win 7 SP1 users need to upgrade.
No XP/Vista support.

Microsoft .NET Framework 4.5 Download (Prerequisite for Powershell 3)
MKVToolNix 6.3.0 Download
SIL FontUtils 1.00 Download
ExRelease 0.9.6 Download
ExRelease-Export 0.7 Download

Setting up the environment

  1. Install AviSynth
  2. Open your AviSynth plugins directory in Explorer
    Unless you changed the the AviSynth install location, your plugins directory should be
    (enter these into your explorer location bar):
    • [On 64-bit Windows] %ProgramFiles(x86)%\AviSynth 2.5\plugins
    • [On 32-bit Windows] %ProgramFiles%\AviSynth 2.5\plugins
    There should be only 3 files inside the directory: colors_rgb.avsi, DirectShowSource.dll, TCPDeliver.dll
  3. Open the Dither Avisynth Tools archive (dither-1.23.0.zip) and unpack the following files to your AviSynth plugin directory:
    • avstp.dll
    • dither.avsi
    • dither.dll
    • mt_xxpand_multi.avsi
    The docs folder inside the archive contains detailed documentation on the dither tools, so you might want to extract this to your AviSynth Docs directory or anywhere else you'll find it in case you need it later
  4. Open the downloaded ffms2 archive and extract the contents into your Avisynth plugin directory
    • ffms2.dll
    • ffmsindex.exe
  5. Open the downloaded masktools archive and extract the correct masktools2.dll to your AviSynth plugin directory. If on XP use the file found in the x86_xp Folder, otherwise the x86 folder's file is correct. If you're running a 64bit setup use the x64 files.
  6. Open the downloaded SupTitle archive and extract the contents into your Avisynth plugin directory
    • msvcp100.dll
    • msvcr100.dll
    • SupCore.dll
    • SupTitle.dll
  7. Open the downloaded AvsPmod archive and extract the AvsPmod folder to:
    • On 64-bit Windows: %ProgramFiles(x86)%
    • On 32-bit Windows: %ProgramFiles%
    Create a shortcut to avspmod.exe, or pin it to the taskbar/start menu
  8. Copy the downloaded VSFilter.dll and FFInfoEx.avsi to your Avisynth plugin directory

Getting started with screenshot comparisons

  1. Start AvsPmod and open the settings dialog (Options > Program settings)
    1. On the User Sliders tab check Hide slider window by default (The slider window usually only gets in the way)
    2. If you are using more than one screen, it's usually wise to check the Seperate preview window option, so you can have one screen dedicated to the video and one to the script
    3. On the Misc tab, uncheck the Show warning for bad plugin naming at startup option
  2. Go to Options > Snippets and click on Insert. Insert the following script template as snippet and give it a tag you will remember
    (Script by Firesledge with a few additions)
  3. ############################################################################# ####################### -Options, Settings- ############################# ############################################################################# vidfile = "VIDEOFILE" subfile = "SUBFILE" group = "GROUPNAME" #Unless upscaling leave these as 0, else add desired values upscale_width = 0 upscale_height = 0 Logging = false display_group = true displayFramNum = false display_timecode = false display_subtitles = true # Adding blank frames in front or back of the VidClp Front_FramePadding = 0 Back_FramePadding = 0 ############################################################################# ################## -Should Not Need To Change- ########################## ############################################################################# ## creating file and set path for future log entries: (Logging) ? Eval(""" folder = ScriptDir() (RightStr(folder, 1) == "\") ? \ SetLogParams(folder + group + "_ScriptLog.log", LOG_INFO): SetLogParams(folder + "\" + group + "_ScriptLog.log", LOG_INFO) LogMsg("Starting Logger", LOG_INFO) """) \:nop() c1 = FFVideoSource (vidfile, enable10bithack=false, colorspace="YV12") c2 = FFVideoSource (vidfile, enable10bithack=true, varprefix="c1_", colorspace="YV12") (StrLen(subfile) == 0) ? Eval(""" F_blank1 = BlankClip(c1, length= Front_FramePadding) B_blank1 = BlankClip(c1, length= Back_FramePadding) c1 = F_blank1+c1+B_blank1 F_blank2 = BlankClip(c2, length= Front_FramePadding) B_blank2 = BlankClip(c2, length= Back_FramePadding) c2 = F_blank2+c2+B_blank2 """): \nop() w = c1.Width () h = c1.Height () wm4 = (w + 3) / 4 * 4 hm4 = (h + 3) / 4 * 4 b10 = (c2.Height () > c1.Height ()) target_width = (upscale_width > 0) ? upscale_width : w target_height = (upscale_height > 0) ? upscale_height : h matrix = (c1_FFCOLOR_SPACE == 1) ? "709" \  : (c1_FFCOLOR_SPACE >= 5) ? "601" : Dither_undef () par = (c1_FFSAR_NUM > 0 && c1_FFSAR_DEN > 0) \  ? Float (c1_FFSAR_NUM) / Float (c1_FFSAR_DEN) \  : Dither_undef () tv_range = (c1_FFCOLOR_RANGE != 2) (b10) ? c2 : c1 #Adding Subs based on the file ext Subs = (StrLen(subfile) > 0 && display_subtitles) ? \ (RightStr(LCase(subfile), 3) == "sup") ? \ (b10) ? Dither_limit_dif16(DitherPost(mode=-1).SupTitle(subfile).Dither_convert_8_to_16 (), thr=1.0, elast=2.0) : SupTitle(subfile) \  :(RightStr(LCase(subfile), 3) == "sub") ? \ (b10) ? Dither_limit_dif16(DitherPost(mode=-1).VSFilter_Vobsub(subfile).Dither_convert_8_to_16 (), thr=1.0, elast=2.0) : VSFilter_Vobsub(subfile) \  :(b10) ? Dither_limit_dif16(DitherPost(mode=-1).TextSub(subfile).Dither_convert_8_to_16 (), thr=1.0, elast=2.0) : TextSub(subfile) \: nop() #Add blank frames if needed (StrLen(subfile) > 0 && display_subtitles) ? Eval(""" F_blank2 = BlankClip(Subs, length= Front_FramePadding) B_blank2 = BlankClip(Subs, length= Back_FramePadding) F_blank2+Subs+B_blank2 """): \nop() (VersionNumber () >= 2.6) ? last \ : (b10) ? Dither_addborders16 (0, 0, wm4 - w, hm4 - h) \  : AddBorders (0, 0, wm4 - w, hm4 - h) (target_width != c1.Width() || target_height != c1.Height()) ? Dither_srgb_display (lsb_in=b10, matrix=matrix, par=par, tv_range=tv_range, w=target_width, h=target_height) \ : Dither_srgb_display (lsb_in=b10, matrix=matrix, par=par, tv_range=tv_range) cmt1 = (target_width > c1.Width() || target_height > c1.Height()) ? group + "\nupscaled" : group cmt2 = (display_group) ? \ cmt1 : "" FFInfoEx(framenum=displayFramNum,vfrtime=display_timecode, cfrtime=false, frametype=false, x=last.width-6, y=4, cmt=cmt2, align=9, shorttime=true)
  4. Now that you're all set, let's load the videos to compare.
    1. Click into the empty script window and hit F7 to get a list of your snippets. Since there's only the one snipped you just created, hit TAB to insert it
    2. Replace VIDEOFILE in the first line with the full path to an episode (e.g. C:/MyCoolVideos/Oruchuban Ebichu/Oruchuban Ebichu - 01-02 [Ampeg].avi) of the first release you want to compare and GROUPNAME in the last line with the appropriate group tag
    3. Hit F5 to load (or refresh) the video. Loading a file for the first time might take a few seconds, since the file is being indexed first.
    4. Save the script
    5. Hit Ctrl+N or double click next to the current tab to open a new script tab
    6. Repeat from Step 3a
  5. Syncing up the releases (easymode)
    1. Check if the video of all releases matches up, by going through them with Alt+1, Alt+2, Alt+3, ...
      The best way to do is is to seek to the last frame before a scene change, check if it matches up across tabs, then seek to the next frame and check again
      (Seek by using the arrow keys (left/right: 1 frame; up/down: 1 second) or clicking the timeline for larger time distances)

      Note: You may find out that not all subsequent frames match up or worse, the releases running out of sync over time. If it's only single frames, just avoid using them for screenshots. In case of releases running out of sync, you're dealing with either missing sections or different frame rates. Refer to the [Advanced Tutorial TBD] on how to deal with those cases.
    2. Once all releases you want to compare are in sync, right click their tabs and add them to a single group. Make sure the Apply offsets and Offset also bookmarks options are checked.
      AvsPmod will now remember the frame offsets between tabs and automatically seek to the right frames on a shared timeline.
    1. To reasonably compare screenshots, we need all frame sizes to be of the same resolution. You should have noticed any differences already while syncing up the releases.
      If all resolutions match, skip this step. If they don't, find out the highest resolution by looking at the bottom right of the status bar.
      The information will be in the following format: FrameWidth x FrameHeight (AspectRatio) - Framerate fps - Colorspace
    2. Take the largest width and height among the releases and find the following section in the scripts for all releases that need to be resized:
      upscale_width = 0
      upscale_height = 0
      Replace the 0s with the largest FrameWidth and the largest FrameHeight
    3. Hit F5 to refresh the video preview and confirm everything works as expected.
  6. Select frames for the screenshot comparison
    1. Find a frame suitable to convey significant information about an aspect of video quality.
      Pick:
      • one or two frames of a structure that represents what is on the screen most of the episode (to give a general idea about the video quality)
      • frames from dark scenes
      • high-detail frames / frames with fine structures
      • frames with low contrast
      • frames from high-motion scenes
      • a frame or two from a fade-in/fade-out
      • frames that display video artifacts in one ore more releases (refer to this thread on how to spot and identify video artifacts)
      • at least one frame from the OP and one frame from the ED
      Try to get as many B-Frames as possible. Ideally you'd want matching frame types across the different releases.
      In practice checking this gets more of a waste of time with each additional release you have to compare. Just try to keep the number of B-to-I comparisons low and make sure you don't pick only B-Frames for one release and only P-Frames for the other.
      A very easy way to avoid this issue is to not pick frames by only looking at one release. This comes with the added benefit of you being more likely to spot video artifacts in ALL releases.
      (Check the overlay on the top right of the video frame to find the frame type of the current frame.)
    2. Once you've decided on a frame, hit Ctrl+B to bookmark it.
    3. Repeat from 6a for each additional frame
      If you want to check the frames you already bookmarked, hit F2/Shift+F2 to browse through your bookmarks
  7. Export screenshots
    1. Once you're done deciding on frames to screenshot (10-15 is a good number), it's time to export them to PNG.
      Go to Macros > Save image sequence (make sure Select frames is set to "Bookmarks" and Output format to "*.png")
    2. Pick an output directory and basename.
      I recommend using the basename format %06d_Groupname. This way your screenshots will (almost) always sort to comparison-friendly order by default. Make sure Add the frame number as suffix is checked when using %06d, otherwise it only counts up rather than inserting the current frame number.
      Example of Directory+Basename: Z:\ScreenCompare\Out\%06d_Zurako
      You may also want want to check the Use always this directory option since you need to run this macro for each release seperately.
    3. Click OK. You'll get a confirmation once the export is done.
    4. Repeat from step 7a for every open tab/release

Using MKVToolnix for subtitle extraction

  1. Run the MKVToolnix installer. If using the portable version: Extract the archive
  2. The installer will recommend downloading gMKVExtractGUI (portable users: It can be downloaded seperately, just place it in the appropriate folder) at some point. Do that if you don't know what CLI MKVExtract is and how to use it. Probably also do it if you know, I find that it simplifies the extraction.
  3. Run gMKVExtractGUI.exe
  4. Drag and Drop the file(s) that you want to extract the suptitles of.
  5. Select the tracks you wish to extract. Then click Extract
  6. That's it, the extracted files (on default settings) should be in the same folder as the source files.

Setting up the ExRelease extraction script (Deprecated and Complicated)

  1. Open Notepad or a text editor of your choice and type ;.
  2. Install MKVToolNix and copy the path to the destination folder into your notepad document.
    1. Append a ; to your notepad document. The contents should now look like this:
    2.  ;C:\Program Files (x86)\MKVToolNix;
  3. Install FontUtils and make sure the Add installation directory to PATH option is checked
  4. Remember your AviSynth plugin directory from the first tutorial? Copy its path to your notepad document and append another ";"
    Unless you changed the the AviSynth install location, your plugins directory should be
    (enter these into your explorer location bar to make them resolve to full paths):
    • [On 64-bit Windows] %ProgramFiles(x86)%\AviSynth 2.5\plugins
    • [On 32-bit Windows] %ProgramFiles%\AviSynth 2.5\plugins
    Make sure you append the full path to your notepad document, so it looks like this:
  5.  ;C:\Program Files (x86)\MKVToolNix;C:\Program Files (x86)\AviSynth 2.5\plugins;
  6. Unpack the ExRelease archive to
    • %userprofile%\Documents\WindowsPowerShell\Modules
  7. To make the tools you just installed available to the script and the script conveniently available from everywhere, we need to add their locations to your PATH environment variable
    1. Hit Win+Pause to open the System Control Panel
    2. Click on Advanced System Settings (on the left sidebar), which should open the System Properties Window
    3. Click on Environment Variables
    4. Browse the System variables until you find the Path variable. Highlight it and click on Edit...
    5. Click into the Variable value input field, and hit the End key to move the cursor behind the last entry (which should be your FontUtils path)
    6. Append the contents of your notepad document and hit Enter
    7. Click OK on the Environment Variables and System Properties to save the settings
  8. Run Windows PowerShell (you'll find it in the programs menu)
    1. Make sure you are running at least Powershell v3.0. Type
      $PSVersionTable.PSVersion
      into the command prompt and hit enter. If the number under Major says 3, you're good to go (continue with step 8)
    2. If it doesn't, install
      • [On 64-bit Windows] Windows6.1-KB2506143-x64.msu
      • [On 32-bit Windows] Windows6.1-KB2506143-x86.msu

      If the update fails with "The update is not applicable to your computer", you need to install the .NET Framework 4.5 (dotNetFx45_Full_setup.exe) first.
      You may need to restart your computer after installing Powershell 3.
      Open Windows PowerShell again and run

      $PSVersionTable.PSVersion
      to confirm you are now running version 3
  9. Next, we have to change the execution policy to allow running unsigned scripts. To do this, run
    Set-ExecutionPolicy Bypass -Scope CurrentUser
    and confirm with Y. With this preparations to run the ExRelease script are done.

Using the ExRelease script to take screenshots with subtitles/typesetting

The ExRelease script automates a number of thigs you'd otherwise have to do by hand:

  • Demuxes subtitles from .mkv files
  • Extracts attached fonts softsubbed releases (which are required to render the subtitles correctly)
  • Looks for typesetting inside extracted .ass subtiles and writes a text file, which can be imported as bookmarks in AvsPmod
  • Loads extracted fonts into memory to make them available to the subtitle renderer
  • Finds the highest resolution of the releases you want to compare
  • Writes an AviSynth script with all important parameters already set, so you can start taking screenshots right away


  1. Open PowerShell
  2. Move or copy all releases you want to compare with each other to a separate folder. The script works on whole directories, so every .mkv file in the folder is going to be processed.
  3. Run the script by typing
    ExRelease "X:\SomePath\To Love Ru Darkness"

    (Substitute for your comparison directory, of course.) You can use the Tab key to auto-complete directories or just type "ExRelease" and drag/drop the folder into PowerShell to insert its path.

    The script will now process your files and also create indexes, so it's time to go to the fridge and grab a beer.
  4. When the script is done it will ask you if you want it to load fonts now. Answer with Y for yes.
    Fonts remain loaded in memory for the duration of the session (that means until you log out or shut down the computer).
    1. In case you want to (continue) work on the screenshot comparison after a logout or reboot, run the script again with
      ExRelease "X:\SomePath\To Love Ru Darkness" -load
  5. Open the generated .avs scripts (which reside next to the .mkv files) in AvsPmod.
    If everything went right, all releases should display at the same resolution, subtitles should now be rendered on the frames, and the releases should now have the appropriate group tag next to the frame numbers.
  6. To save you the effort of finding typesetting to compare, ExRelease has already done that for you.
    1. To import the found typesetting locations as bookmarks, click on Macros > Import bookmarks from file and pick the .TSChapters.txt saved alongside the release you are comparing.
    2. Repeat this for every other release you are comparing. This is important because you not only want to compare the TS group A did, but also the TS group B did and group a didn't.
    3. Take note that the typesetting detection is very crude and timecodes are somewhat inaccurate, therefore the typesetting may appear a frame before/after the bookmark or e.g. only starts fading in at the bookmark locations. Therefore it's vital to go trough the bookmarks and move them around to get useful screenshots. To remove a bookmark, just press Ctrl+B at the bookmarked location (frame number in red)
  7. To unload fonts after you are done with your comparison, run the script with
    ExRelease "X:\SomePath\To Love Ru Darkness" -unload


Addendum: The script offers a number of advanced parameters that let you customize your workflow. Run

Get-Help ExRelease -detailed

in PowerShell to display its internal help file.

AvsPmod (x64)

Required Components

Download the Premade Install and Plugin folder Bundle

Setting up the environment

  1. Unzip and open the premade Install and Plugin folder Bundle in Explorer.
    (should be named something like "AvsPmod_Setup_Vx.x.x.zip")
  2. Install AviSynth+
    Starting at the root of the Install and Plugin folder extracted archive, the AviSynth+ install is located AvsPmod_Setup_Vx.x.x\AvsPmod_Setup\AviSynthPlus.
    There should only be 2 things inside the directory: A folder named plugins64+, and AviSynthPlus_3.7.0_20210111_vcredist.exe
    execute the AviSynthPlus_3.7.0_20210111_vcredist.exe file
  3. Open the newly installed AviSynth+ plugins64+ directory in a new Explorer window
    Unless you changed the the AviSynth+ install location, your plugins directory should be
    (enter these into your explorer location bar): %ProgramFiles(x86)\%AviSynth+\plugins64+ There should be only 3 files inside the directory: colors_rgb.avsi, DirectShowSource.dll, TCPDeliver.dll
  4. Open the plugins64+ directory that's next to the AviSynthPlus_3.7.0_20210111_vcredist.exe in the install directory
  5. Copy contents into your Avisynth+ plugin64+ directory
    Copy all the files from the AvsPmod_Setup_Vx.x.x\AvsPmod_Setup\AviSynthPlus\plugin64+ directory to the %ProgramFiles(x86)\%AviSynth+\plugins64+ directory
  6. Close the %ProgramFiles(x86)\%AviSynth+\plugins64+ Explorer window
  7. Copy the AvsPmod_x64 folder to your desktop
    The AvsPmod_x64 folder is located in the AvsPmod_Setup_Vx.x.x\AvsPmod_Setup directory
  8. Getting started with screenshot comparisons

    1. Start AvsPmod and open the settings dialog (Options > Program settings)
      1. On the User Sliders tab check Hide slider window by default (The slider window usually only gets in the way)
      2. If you are using more than one screen, it's usually wise to check the Seperate preview window option, so you can have one screen dedicated to the video and one to the script
      3. On the Misc tab, uncheck the Show warning for bad plugin naming at startup option
    2. Go to Options > Snippets and click on Insert. Insert the following script template as snippet and give it a tag you will remember
      (Script by Firesledge with a few additions)
    3. #############################################################################
      #######################   -Options, Settings-   #############################
      #############################################################################
      
      vidfile = "VIDEOFILE"
      subfile = "SUBFILE"
      group = "GROUPNAME"
      
      #Unless upscaling leave these as 0, else add desired px values
      VidClp_width = 0 #1280
      VidClp_height = 0 #720
      
      # Adding blank frames in front or back of the VidClp
      Front_FramePadding = 0
      Back_FramePadding = 0
      
      Logging = false
      display_group = true
      displayFramNum = false
      display_timecode = false
      display_subtitles =  true
      
      Notes = ""  # If none then keep empty quotes
      
      #############################################################################
      ##################   -Should Not Need To Change-   ##########################
      #############################################################################
      
      #c1  = ChangeFPS(c1,29.950)
      #c2  = ChangeFPS(c2,29.950)
      
      ## creating file and set path for future log entries:
      (Logging) 
      \ ? Eval("""
      	folder = ScriptDir()
      	(RightStr(folder, 1) == "\") 
          \    ? SetLogParams(folder + group + "_ScriptLog.log", LOG_INFO)
      	\    : SetLogParams(folder + "\" + group + "_ScriptLog.log", LOG_INFO)
      	LogMsg(string("Starting Logger"), LOG_INFO)
      	""")
      \:nop() # Undefined()
      
      /*
      # Alt to FFVideoSource but needs other changes for script to work right
      c1 = LWLibavVideoSource(vidfile,format="YUV420P8")
      */ 
      c1  = FFVideoSource (vidfile, varprefix="c1_", colorspace="YV12")
      
      #Add blank frames to vid file if needed
      (StrLen(subfile) == 0) 
      \ ? Eval("""
          F_blank1 = BlankClip(c1, length= Front_FramePadding)  
          B_blank1 = BlankClip(c1, length= Back_FramePadding)
          c1 = F_blank1+c1+B_blank1     
          """)
      \: nop()
      
      w   = c1.Width ()
      h   = c1.Height ()
      wm4 = (w + 3) / 4 * 4
      hm4 = (h + 3) / 4 * 4
      
      target_width =  (VidClp_width > 0) ?  VidClp_width : w
      target_height = (VidClp_height > 0) ? VidClp_height : h
      
      matrix   = (1 <= c1_FFCOLOR_SPACE <= 4) ? "709"
      \        : (c1_FFCOLOR_SPACE >= 5) ? "601" : nop() 
      par      = (c1_FFSAR_NUM > 0 && c1_FFSAR_DEN > 0)
      \        ? Float (c1_FFSAR_NUM) / Float (c1_FFSAR_DEN)
      \        : nop()
      tv_range = (c1_FFCOLOR_RANGE != 2)
      
      #Adding Subs based on the file ext
      Subs = (StrLen(subfile) > 0 && display_subtitles) 
      \    ? (RightStr(LCase(subfile), 3) == "sup") 
      \         ?  SupTitle(c1,subfile)
      \         : (RightStr(LCase(subfile), 3) == "sub") 
      \         ?  VSFilter_Vobsub(c1,subfile)
      \         :  AssRender(c1,subfile)
      \: nop()
      
      #Add blank frames to vid+sub file if needed
      (StrLen(subfile) > 0 && display_subtitles) 
      \ ? Eval("""
          F_blank2 = BlankClip(Subs, length= Front_FramePadding)  
          B_blank2 = BlankClip(Subs, length= Back_FramePadding)
          F_blank2+Subs+B_blank2
          """)
      \: nop()
      
      (VersionNumber () >= 2.6) ? last
      \ : AddBorders (0, 0, wm4 - w, hm4 - h)
      
      #upscale
      ((par > 0) ?
      \  (target_width != c1.Width() || target_height != c1.Height()) 
      \     ? Dither_srgb_display (par=par, matrix=matrix, tv_range=tv_range, w=target_width, h=target_height)
      \     : Dither_srgb_display (par=par, matrix=matrix,  tv_range=tv_range)
      \  :(target_width != c1.Width() || target_height != c1.Height()) 
      \     ? Dither_srgb_display (autopar=True, matrix=matrix, tv_range=tv_range, w=target_width, h=target_height)
      \     : Dither_srgb_display (autopar=True, matrix=matrix,  tv_range=tv_range)
      \)
      
      #for screenshot macro and info in screenshot
      screenShotGroup = (target_width > c1.Width() || target_height > c1.Height())
      \ ? group + "_Upscaled" : group
      cmt1 = (target_width > c1.Width() || target_height > c1.Height()) 
      \ ? group + "\nupscaled" : group
      cmt2 = (display_group) ? 
      \                 cmt1 : ""
      
      FFInfoEX(framenum=displayFramNum,vfrtime=display_timecode, cfrtime=false, frametype=false, x=last.width-6, y=4, cmt=cmt2, align=9, shorttime=true)
      
      # Adding notes on screen
      (StrLen(Notes) > 0 )
      \    ? Subtitle("Note: " + Notes, lsp=0,text_color=$fd2f2f,size=24,align=7,y=5)
      \    :  Subtitle("")
      

    4. Now that you're all set, let's load the videos to compare.
      1. Click into the empty script window and hit F7 to get a list of your snippets. Since there's only the one snipped you just created, hit TAB to insert it
      2. Replace VIDEOFILE in the first line with the full path to an episode (e.g. C:/MyCoolVideos/Oruchuban Ebichu/Oruchuban Ebichu - 01-02 [Ampeg].avi) of the first release you want to compare and GROUPNAME in the last line with the appropriate group tag
      3. Hit F5 to load (or refresh) the video. Loading a file for the first time might take a few seconds, since the file is being indexed first.
      4. Save the script
      5. Hit Ctrl+N or double click next to the current tab to open a new script tab
      6. Repeat from Step 3a
    5. Syncing up the releases (easymode)
      1. Check if the video of all releases matches up, by going through them with Alt+1, Alt+2, Alt+3, ...
        The best way to do is is to seek to the last frame before a scene change, check if it matches up across tabs, then seek to the next frame and check again
        (Seek by using the arrow keys (left/right: 1 frame; up/down: 1 second) or clicking the timeline for larger time distances)

        Note: You may find out that not all subsequent frames match up or worse, the releases running out of sync over time. If it's only single frames, just avoid using them for screenshots. In case of releases running out of sync, you're dealing with either missing sections or different frame rates. Refer to the [Advanced Tutorial TBD] on how to deal with those cases.
      2. Once all releases you want to compare are in sync, right click their tabs and add them to a single group. Make sure the Apply offsets and Offset also bookmarks options are checked.
        AvsPmod will now remember the frame offsets between tabs and automatically seek to the right frames on a shared timeline.
      1. To reasonably compare screenshots, we need all frame sizes to be of the same resolution. You should have noticed any differences already while syncing up the releases.
        If all resolutions match, skip this step. If they don't, find out the highest resolution by looking at the bottom right of the status bar.
        The information will be in the following format: FrameWidth x FrameHeight (AspectRatio) - Framerate fps - Colorspace
      2. Take the largest width and height among the releases and find the following section in the scripts for all releases that need to be resized:
        upscale_width = 0
        upscale_height = 0
        Replace the 0s with the largest FrameWidth and the largest FrameHeight
      3. Hit F5 to refresh the video preview and confirm everything works as expected.
    6. Select frames for the screenshot comparison
      1. Find a frame suitable to convey significant information about an aspect of video quality.
        Pick:
        • one or two frames of a structure that represents what is on the screen most of the episode (to give a general idea about the video quality)
        • frames from dark scenes
        • high-detail frames / frames with fine structures
        • frames with low contrast
        • frames from high-motion scenes
        • a frame or two from a fade-in/fade-out
        • frames that display video artifacts in one ore more releases (refer to this thread on how to spot and identify video artifacts)
        • at least one frame from the OP and one frame from the ED
        Try to get as many B-Frames as possible. Ideally you'd want matching frame types across the different releases.
        In practice checking this gets more of a waste of time with each additional release you have to compare. Just try to keep the number of B-to-I comparisons low and make sure you don't pick only B-Frames for one release and only P-Frames for the other.
        A very easy way to avoid this issue is to not pick frames by only looking at one release. This comes with the added benefit of you being more likely to spot video artifacts in ALL releases.
        (Check the overlay on the top right of the video frame to find the frame type of the current frame.)
      2. Once you've decided on a frame, hit Ctrl+B to bookmark it.
      3. Repeat from 6a for each additional frame
        If you want to check the frames you already bookmarked, hit F2/Shift+F2 to browse through your bookmarks
    7. Export screenshots
      1. Once you're done deciding on frames to screenshot (10-15 is a good number), it's time to export them to PNG.
        Go to Macros > Save image sequence (make sure Select frames is set to "Bookmarks" and Output format to "*.png")
      2. Pick an output directory and basename.
        I recommend using the basename format %06d_Groupname. This way your screenshots will (almost) always sort to comparison-friendly order by default. Make sure Add the frame number as suffix is checked when using %06d, otherwise it only counts up rather than inserting the current frame number.
        Example of Directory+Basename: Z:\ScreenCompare\Out\%06d_Zurako
        You may also want want to check the Use always this directory option since you need to run this macro for each release seperately.
      3. Click OK. You'll get a confirmation once the export is done.
      4. Repeat from step 7a for every open tab/release

    Using MKVToolnix for subtitle extraction

    1. Run the MKVToolnix installer. If using the portable version: Extract the archive
    2. The installer will recommend downloading gMKVExtractGUI (portable users: It can be downloaded seperately, just place it in the appropriate folder) at some point. Do that if you don't know what CLI MKVExtract is and how to use it. Probably also do it if you know, I find that it simplifies the extraction.
    3. Run gMKVExtractGUI.exe
    4. Drag and Drop the file(s) that you want to extract the suptitles of.
    5. Select the tracks you wish to extract. Then click Extract
    6. That's it, the extracted files (on default settings) should be in the same folder as the source files.

    Setting up the ExRelease extraction script

    This is a great tool to have working. Unfortunately, these instructions have not yet been updated from the x86 version. If you can't figure it out just pm theworm4002. ill help you set it up.

    1. Open Notepad or a text editor of your choice and type ;.
    2. Install MKVToolNix and copy the path to the destination folder into your notepad document.
      1. Append a ; to your notepad document. The contents should now look like this:
      2.  ;C:\Program Files (x86)\MKVToolNix;
    3. Install FontUtils and make sure the Add installation directory to PATH option is checked
    4. Remember your AviSynth plugin directory from the first tutorial? Copy its path to your notepad document and append another ";"
      Unless you changed the the AviSynth install location, your plugins directory should be
      (enter these into your explorer location bar to make them resolve to full paths):
      • [On 64-bit Windows] %ProgramFiles(x86)%\AviSynth 2.5\plugins
      • [On 32-bit Windows] %ProgramFiles%\AviSynth 2.5\plugins
      Make sure you append the full path to your notepad document, so it looks like this:
    5.  ;C:\Program Files (x86)\MKVToolNix;C:\Program Files (x86)\AviSynth 2.5\plugins;
    6. Unpack the ExRelease archive to
      • %userprofile%\Documents\WindowsPowerShell\Modules
    7. To make the tools you just installed available to the script and the script conveniently available from everywhere, we need to add their locations to your PATH environment variable
      1. Hit Win+Pause to open the System Control Panel
      2. Click on Advanced System Settings (on the left sidebar), which should open the System Properties Window
      3. Click on Environment Variables
      4. Browse the System variables until you find the Path variable. Highlight it and click on Edit...
      5. Click into the Variable value input field, and hit the End key to move the cursor behind the last entry (which should be your FontUtils path)
      6. Append the contents of your notepad document and hit Enter
      7. Click OK on the Environment Variables and System Properties to save the settings
    8. Run Windows PowerShell (you'll find it in the programs menu)
      1. Make sure you are running at least Powershell v3.0. Type
        $PSVersionTable.PSVersion
        into the command prompt and hit enter. If the number under Major says 3, you're good to go (continue with step 8)
      2. If it doesn't, install
        • [On 64-bit Windows] Windows6.1-KB2506143-x64.msu
        • [On 32-bit Windows] Windows6.1-KB2506143-x86.msu

        If the update fails with "The update is not applicable to your computer", you need to install the .NET Framework 4.5 (dotNetFx45_Full_setup.exe) first.
        You may need to restart your computer after installing Powershell 3.
        Open Windows PowerShell again and run

        $PSVersionTable.PSVersion
        to confirm you are now running version 3
    9. Next, we have to change the execution policy to allow running unsigned scripts. To do this, run
      Set-ExecutionPolicy Bypass -Scope CurrentUser
      and confirm with Y. With this preparations to run the ExRelease script are done.

    Using the ExRelease script to take screenshots with subtitles/typesetting

    The ExRelease script automates a number of thigs you'd otherwise have to do by hand:

    • Demuxes subtitles from .mkv files
    • Extracts attached fonts softsubbed releases (which are required to render the subtitles correctly)
    • Looks for typesetting inside extracted .ass subtiles and writes a text file, which can be imported as bookmarks in AvsPmod
    • Loads extracted fonts into memory to make them available to the subtitle renderer
    • Finds the highest resolution of the releases you want to compare
    • Writes an AviSynth script with all important parameters already set, so you can start taking screenshots right away


    1. Open PowerShell
    2. Move or copy all releases you want to compare with each other to a separate folder. The script works on whole directories, so every .mkv file in the folder is going to be processed.
    3. Run the script by typing
      ExRelease "X:\SomePath\To Love Ru Darkness"

      (Substitute for your comparison directory, of course.) You can use the Tab key to auto-complete directories or just type "ExRelease" and drag/drop the folder into PowerShell to insert its path.

      The script will now process your files and also create indexes, so it's time to go to the fridge and grab a beer.
    4. When the script is done it will ask you if you want it to load fonts now. Answer with Y for yes.
      Fonts remain loaded in memory for the duration of the session (that means until you log out or shut down the computer).
      1. In case you want to (continue) work on the screenshot comparison after a logout or reboot, run the script again with
        ExRelease "X:\SomePath\To Love Ru Darkness" -load
    5. Open the generated .avs scripts (which reside next to the .mkv files) in AvsPmod.
      If everything went right, all releases should display at the same resolution, subtitles should now be rendered on the frames, and the releases should now have the appropriate group tag next to the frame numbers.
    6. To save you the effort of finding typesetting to compare, ExRelease has already done that for you.
      1. To import the found typesetting locations as bookmarks, click on Macros > Import bookmarks from file and pick the .TSChapters.txt saved alongside the release you are comparing.
      2. Repeat this for every other release you are comparing. This is important because you not only want to compare the TS group A did, but also the TS group B did and group a didn't.
      3. Take note that the typesetting detection is very crude and timecodes are somewhat inaccurate, therefore the typesetting may appear a frame before/after the bookmark or e.g. only starts fading in at the bookmark locations. Therefore it's vital to go trough the bookmarks and move them around to get useful screenshots. To remove a bookmark, just press Ctrl+B at the bookmarked location (frame number in red)
    7. To unload fonts after you are done with your comparison, run the script with
      ExRelease "X:\SomePath\To Love Ru Darkness" -unload


    Addendum: The script offers a number of advanced parameters that let you customize your workflow. Run

    Get-Help ExRelease -detailed

    in PowerShell to display its internal help file.

    Vapoursynth

    Currently, we have not written a guide for this. However, theworm4002 could help you set this up if you are interested... that would probably also motivate them to put something better here :-P

    MPC-HC + madVr

    Display Ratio Safe? YES

    Cons: Cannot take screens of video with a resolution higher than your desktop. (Can possibly be fixed if you can change your resolution temporally)

    Extra Utilities: IrfanView (Eliminates need to manually crop images)

    Open up IrfanView and type the 'C' key to open up the capture dialog (link)

      Change the settings to match the example image. You can of course use a hot-key combination of your choosing and the file name can be ignored as you should be renaming after each capture you take.
      
    

    Press 'Start' and IrfanView should minimise

    Open up your video in MPC and find a good scene

      Make sure your video is displaying at its display resolution (Or at least change it back before the next step).
      Use general seeking tips. Ctrl+Right Arrow Key is MPC's default frame step key.
      (Backward stepping using the Left Arrow Key can sometimes do multiple frames)
      
    

    Found that frame? Type the '1' key to change to MPC's minimal view (before, after)

      (To revert back to the default view, type '3')
      This step eliminates the need to crop the screenshots to the correct size.
      If your desktop is the same resolution as your video, you WILL need to use full-screen mode (Ctrl+Enter)
    

    Type the IrfanView hot-key you setup earlier (Alt+F in example image)

      Make sure the entire video is displayed on-screen, if you have positioned your window at the edge of your desktop and is cutting off, the capture will be cut off too.
    

    Check the destination directory you told IrfanView to save your screenshots to[/size] (link)

      Your screenshot should be in that folder (Double check hot-key and destination if not).
      Rename the file now in order to prevent confusion later, '## group timestamp' is a good idea.
    

    Repeat the process as necessary.

    mpv

    • Don't take screenshots with the default keybindings, it degrades quality
    • Don't take screenshots with the opengl-hq profile alone. It activates debanding.
    • Deactivate debanding by setting --deband=no in mpv.conf
    • Set screenshot key to "KEY scnreenshot window" (e.g. "s screenshot window") in input.conf
    • Make sure to leave the window at the original size. Don't resize it.
    • Make sure to set --screenshot-format=png

    To always take screenshots in 8bit:

    Credit: der_richter

    General seeking tips

    Find a frame suitable to convey significant information about an aspect of video quality.

    Pick:

       - one or two frames of a structure that represents what is on the screen most of the episode (to give a general idea about the video quality)
       - frames from dark scenes
       - high-detail frames / frames with fine structures
       - frames with low contrast
       - frames from high-motion scenes
       - a frame or two from a fade-in/fade-out
       - frames that display video artifacts in one ore more releases (refer to this thread on how to spot and identify video artifacts)
       - at least one frame from the OP and one frame from the ED
    

    Hosting Images

    You must host your own images. Do not hotlink images. Take a look at some of the approved uploads to get an idea of what is needed before a torrent can be approved.

    • Note: Screenshots should be taken in PNG format, at the correct resolution. If the video is anamorphic, make sure screenshots are taken at display aspect ratio and resolution.
    • Note 2: At least 1 shot has to show the subtitles with the style defined in the release. Click here for more detailed info.

    It is recommended that you use our image hosting server BakaSHOTS as it is the most compatible with our site. Furthermore, we won't have dead screenshots when images are pruned on other hosting sites. To use BakaSHOTS just sign in using your BakaBT account.

    If for some reason that doesn't suit you, PhotoBucket is an acceptable alternative.

    • Note: While PhotoBucket does offer free accounts, you must use an account with a purchased subscription. The free accounts will generate a watermark over top all linked images.

    Image Hosts You Shouldn't Use

    • ImageShack - Resizes and degrades image quality after an unknown amount of time. Still useful for comments and temporarily uploading images before transferring them to BakaSHOTS.
    • Imgur - According to their "Terms of Service" hotlinking to torrent sites is prohibited.

    Adding Screenshots

    Adding these tags will not do anything to your description, instead it will add screenshots just below your description using a lightbox viewer for easy viewing. If using HTML code, screenshot tags may be placed inside or outside the <html> tags, there is no difference in parsing either way.

    [screenshot]screenshot code goes here[/screenshot]
    
    Inserts screenshot thumbnails below the description. Thumbnails are resized to 150 pixels in width by default.
    [screenshot=200]screenshot code goes here[/screenshot]
    
    Inserts screenshot thumbnails 200 pixels wide below the description. Change 200 to the pixel width of your screenshot thumbnails as necessary.

    You can add more than one block of screenshots, possibly with different size thumbnails.

    [img]link to image[/img]
    
    Will add one image. You can add as many as you like.
    [url=link to image][img]link to thumbnail[/img][/url]
    
    Allows you to explicitly define your own thumbnail images. If no thumbnail image is supplied it will use the linked image and resize it to whatever width is supplied for the thumbnail.

    NOTE: Screenshots will not show up in the Sandbox; you have to go to the torrent description page in order to view them.

    If thumbnail images are not used, the big images are loaded first, then resized to thumbnail-size on your screen. This makes image-loading really slow, and also make scrolling laggy, so as far as possible supply thumbnail images or use an image-host that auto-generates them.

    BakaSHOTS Images

    For details on how to insert images hosted on BakaSHOTS into descriptions, please see here: BBCode#BakaSHOTS.