Selur's Little Message Board

Full Version: Processes 20 minutes of video then white screen
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I'm doing an upscale from VHS, Hybrid runs then suddenly stops and exports an incomplete file, with nicely upscaled video followed by a blank white screen.

Code:
# Imports
import vapoursynth as vs
import os
import ctypes
# Loading Support Files
Dllref = ctypes.windll.LoadLibrary("C:/Program Files/Hybrid/64bit/vsfilters/Support/libfftw3f-3.dll")
import sys
# getting Vapoursynth core
core = vs.core
# Import scripts folder
scriptPath = 'C:/Program Files/Hybrid/64bit/vsscripts'
sys.path.insert(0, os.path.abspath(scriptPath))
# Loading Plugins
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/DenoiseFilter/CTMF/CTMF.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/SharpenFilter/CAS/CAS.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/DenoiseFilter/HQDN3D/libhqdn3d.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/GrainFilter/RemoveGrain/RemoveGrainVS.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/GrainFilter/AddGrain/AddGrain.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/DenoiseFilter/NEO_FFT3DFilter/neo-fft3d.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/DenoiseFilter/DFTTest/DFTTest.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/Support/EEDI3m.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/ResizeFilter/nnedi3/vsznedi3.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/Support/libmvtools.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/Support/scenechange.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/Support/fmtconv.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/MiscFilter/MiscFilters/MiscFilters.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/SourceFilter/LSmashSource/vslsmashsource.dll")
# Import scripts
import edi_rpow2
import G41Fun
import mvsfunc
import havsfunc
# source: 'S:\LastHorrorFilm\LastHorrorFilm-MyCapture.mov'
# current color space: YUV420P8, bit depth: 8, resolution: 720x576, fps: 25, color matrix: 470bg, yuv luminance scale: limited, scanorder: bottom field first
# Loading S:\LastHorrorFilm\LastHorrorFilm-MyCapture.mov using LWLibavSource
clip = core.lsmas.LWLibavSource(source="S:/LastHorrorFilm/LastHorrorFilm-MyCapture.mov", format="YUV420P8", cache=0, fpsnum=25, prefer_hw=0)
# Setting color matrix to 470bg.
clip = core.std.SetFrameProps(clip, _Matrix=5)
clip = clip if not core.text.FrameProps(clip,'_Transfer') else core.std.SetFrameProps(clip, _Transfer=5)
clip = clip if not core.text.FrameProps(clip,'_Primaries') else core.std.SetFrameProps(clip, _Primaries=5)
# Setting color range to TV (limited) range.
clip = core.std.SetFrameProp(clip=clip, prop="_ColorRange", intval=1)
# making sure frame rate is set to 25
clip = core.std.AssumeFPS(clip=clip, fpsnum=25, fpsden=1)
# setting field order to what QTGMC should assume (bottom field first)
clip = core.std.SetFrameProp(clip=clip, prop="_FieldBased", intval=1)
# Deinterlacing using QTGMC
clip = havsfunc.QTGMC(Input=clip, Preset="Fast", TFF=False) # new fps: 50
# make sure content is preceived as frame based
clip = core.std.SetFieldBased(clip, 0)
# adjusting frame count and rate with sRestore
clip = havsfunc.srestore(source=clip, frate=25.0000, omode=6, speed=9, thresh=16, mode=2)
# cropping the video to 720x566
clip = core.std.CropRel(clip=clip, left=0, right=0, top=4, bottom=6)
# removing grain using MLDegrain
clip = G41Fun.MLDegrain(clip=clip, tr=2, soft=[0,0,0])
# denoising using HQDN3D
clip = core.hqdn3d.Hqdn3d(clip=clip, lum_spac=0.00, chrom_spac=7.00, chrom_tmp=10.00)
# contrast sharpening using CAS
clip = core.cas.CAS(clip=clip, sharpness=0.600)
# deringing using HQDeringmod
clip = havsfunc.HQDeringmod(clip, nrmode=2, darkthr=3.0)
clip = core.std.AddBorders(clip=clip, left=0, right=0, top=0, bottom=2) # add borders to archive mod 4 (NNEDI3(CL)) - 720x568
# resizing using ZNEDI3
# current: 720x568 target: 2000x1474 -> pow: 4
clip = edi_rpow2.nnedi3_rpow2(clip=clip, rfactor=4) # 2880x2272
clip = core.std.CropRel(clip=clip, left=0, right=0, top=0, bottom=8) # removing borders (NNEDI3(CL)) -  2880x2264
# adjusting resizing
clip = core.fmtc.resample(clip=clip, w=2000, h=1474, kernel="lanczos", interlaced=False, interlacedd=False)
# adjusting output color from: YUV420P16 to YUV422P10 for ProResModel
clip = core.resize.Bicubic(clip=clip, format=vs.YUV422P10, range_s="limited", dither_type="error_diffusion")
# set output frame rate to 25fps
clip = core.std.AssumeFPS(clip=clip, fpsnum=25, fpsden=1)
# Output
clip.set_output()
10_43_22_8910_04_video: (video encoding)
Code:
"C:\Program Files\Hybrid\64bit\Vapoursynth\vspipe.exe" "S:\LastHorrorFilm\Last-Temp\encodingTempSynthSkript_2022-09-01@10_43_22_8910.vpy" - -c y4m | "C:\Program Files\Hybrid\64bit\ffmpeg.exe" -y -noautorotate -nostdin -threads 8 -f yuv4mpegpipe -i - -an -sn -vf zscale=rangein=tv:range=tv -pix_fmt yuv422p10le -strict -1 -vsync 0 -vcodec prores_ks -profile:v 2 -vtag apcn -aspect 2000:1474 -metadata encoding_tool="Hybrid 2022.07.19.1" -f mov "S:\LastHorrorFilm\Last-Temp\LastHorrorFilm-MyCapture_2022-09-01@10_43_22_8910_04.mov"
starts and finishes after 00:33:09.221.
Last message is:
Code:
frame=13913 fps=7.1 q=-0.0 size=11923712kB time=00:09:16.00 bitrate=175681.7kbits/s speed=0.282x    
frame=13918 fps=7.1 q=-0.0 Lsize=11939048kB time=00:09:16.68 bitrate=175692.8kbits/s speed=0.283x    
video:11938884kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.001373%
FFmpeg reports no errors (exitcode: 0 and exitStatus: 0) and created S:\LastHorrorFilm\Last-Temp\LastHorrorFilm-MyCapture_2022-09-01@10_43_22_8910_04.mov (11659.2 MB).
From the looks of it the vspipe simply stopped without an error.

My guesses atm. are:
  • LWLibavSource has some issue with the source. -> Try whether you can play the file in the Vapoursynth Preview starting at frame 13918.
    As alternative to LWLibavSource you could try using FFMS2 by disabling 'Prefer LWLibAVSource over FFmpegSource2'.
  • LWLibavSource might loose access to the file due to some virus scanner or network disturbance (in case the file is not locally).
  • VsPipe gets closed or the communication between it and FFmpeg gets interrupted for some unknown reason by some virus scanner or similar.

Cu Selur
I really need to find out what exactly is causing this issue. I'm processing captured VHS on a 2TB hard drive, with 1.6TB of free space. Latest de-bug file attached. Would re-installing Hybrid help?
Quote:I really need to find out what exactly is causing this issue.
So, did you try what I suggested?
Also make sure your system CPU, GPU, RAM are not overclocked.

Quote:Latest de-bug file attached.
Don't see any errors or similar there, seems like everything worked. And the queue was finished without a problem.

Quote:Would re-installing Hybrid help?
I doubt it, this does not seem like a Hybrid bug.

Cu Selur
The strange thing is Hybrid used to work on the same PC perfectly. I am at a loss to find out why it started producing mainly white files. I'm using a dev version you sent over so I could output interlaced upscales. Perhaps there is something different in this version? (2022.07.19.1)

I will try disabling 'Prefer LWLibAVSource over FFmpegSource2' and report back.

How can I find out if the system CPU, GPU, RAM are overclocked?
Quote:How can I find out if the system CPU, GPU, RAM are overclocked?
if you did not overclock it, and you bought a pre-build system, it's probably not.
You could also use CPU-Z to check the clock speed of your cpu and memory and GPU-Z to check the gpu speed.

Quote:Perhaps there is something different in this version? (2022.07.19.1)
Mainly the dll versions changed, but if it was a general problem the whole clip would be white, not just starting at a specific position.
Also, if you encode the same clip is it always white starting at the same position?