VideoHelp Forum
+ Reply to Thread
Results 1 to 13 of 13
Thread
  1. Hello,

    I started using QTGMC this week and it gives great results. However, I ran into two problems:

    1. In the beginning of each video, QTGMC reorders some frames in different order (lasts couple seconds). For instance, if the FPS is 50. Frames would be in this order 1, 2, 3, 4, 12, 13, 14, 15, 5, 6, 7, 8, 13, 14, 15, 16, 17, 18, 23, 24, 25, 26,19, 20, 21, etc.... Its really annoying and i cannot find online what is causing this error. Here is the script,I normally use.

    SetFilterMTMode ("QTGMC", 2)
    FFmpegSource2("video", atrack=-1)
    ConvertToYV12()
    AssumeTFF()
    QTGMC(preset="Slower", EdiThreads=3)
    Spline64Resize(640,480)
    Prefetch(10)



    2. I receive FFaudio error for many errors and I have to convert videos muted and then add audio later on. Am I missing some kind of codec or script, please?

    Thank you very much.

    BR

    Tomas
    Quote Quote  
  2. What is the source compression and container ? use mediainfo view=>text

    ffmpegsource2 is not necessarily frame accurate for all file types , and prefetch can cause a mess when frames are out of order.

    You can try FFVideoSource(threads=1), it sometimes helps and can work with prefetch. Otherwise don't use prefetch(10) .

    But it's better to use something frame accurate like DGSource for mpeg2/vc1/avc/hevc - It requires a compatible Nvidia card. But it's frame accurate, robust seeking and reliable

    ConvertToYV12 should be ConvertToYV12(interlaced=true) since you're using QTGMC presumably to deinterlace - if the source was not YV12 to begin with . Otherwise you don't need it


    For the audio, it might be an old ffms2 version, try updating, or use a different source filter such as LSmashAudioSource or BestAudioSource
    Quote Quote  
  3. Originally Posted by poisondeathray View Post
    What is the source compression and container ? use mediainfo view=>text

    ffmpegsource2 is not necessarily frame accurate for all file types , and prefetch can cause a mess when frames are out of order.

    You can try FFVideoSource(threads=1), it sometimes helps and can work with prefetch. Otherwise don't use prefetch(10) .

    But it's better to use something frame accurate like DGSource for mpeg2/vc1/avc/hevc - It requires a compatible Nvidia card. But it's frame accurate, robust seeking and reliable

    ConvertToYV12 should be ConvertToYV12(interlaced=true) since you're using QTGMC presumably to deinterlace - if the source was not YV12 to begin with . Otherwise you don't need it


    For the audio, it might be an old ffms2 version, try updating, or use a different source filter such as LSmashAudioSource or BestAudioSource
    Thanks so much! so much helpful feedback. Here's the outcome:

    - Thanks for explaining prefetch. I was deinterlacing same video with Yadiff Avidemux and TMPGEnc Video Mastering as well as checked the video frame by frame and the issue was not in source having frames reordered. However, I wasnt sure what fetch does so now it makes more sense to me, thx I actually slightly bumped it to 15 frames to be more accurate in measuring.
    - I changed FFmpegSource to FFvideoSource and it has fixed the issue! I was mainly using this for mpeg files that i copied from DVD (.VOB) and mpeg files i recorded of TV, so it should have worked well, but not sure what happened. Now it works perfect and no glitches.
    - Thx for adding interlaced=true to ConvertToYV12. I added it
    - Does DGSource have better results than QTGMC? I just downloaded and am testing it. I opened mpeg file recorded from TV in DGIndex and doubled FR and i see color flickering (T row red, B row green and they keep switching). QTGMC is fixing this issue but maybe i have wrong settings in DGsource?
    - already downloaded latest ffms2, but it doesnt override FFaudio issue. I downloaded BestAudioSource and it works well stand-alone, but how do i muxe tracks in Avisynth+, please? (im sorry, im a newbie).

    This is current script but generates video only:

    SetFilterMTMode ("QTGMC", 2)
    BestAudioSource(".mpg", track=-1)
    FFVideoSource(".mpg", track=-1,threads=1)
    ConvertToYV12(interlaced = true)
    AssumeTFF()
    QTGMC(preset="Slower", EdiThreads=3)
    #Spline64Resize(720,576)
    Prefetch(15)

    I tried to do this, but i got an error in YV12 and all following lines as invalid functions.

    SetFilterMTMode ("QTGMC", 2)
    audiofile1 = BestAudioSource(".mpg", track=-1)
    videofile1 = FFVideoSource(".mpg", track=-1,threads=1)
    file1 = audiodub(videofile1,audiofile1)
    ConvertToYV12(interlaced = true)
    AssumeTFF()
    QTGMC(preset="Slower", EdiThreads=3)
    #Spline64Resize(720,576)
    Prefetch(15)

    Thank you very much in advance
    Quote Quote  
  4. Does DGSource have better results than QTGMC?
    It would be DGSource vs. FFVideoSource => those are source filters. QTGMC is primarily a deinterlacer , different category . DGSource using DGIndexNV to index (and relying on DGDecodeNV.dll for the decoder) is generally better, more consistent compared to FFVideoSource, but DGSource only supports certain types of compression supported by NVDec. FFVideoSource can decode many more types of files . For DGSource you reference the dgi file - DGSource("file.dgi")

    MPEG2Source, using DGIndex, relying on DGDecode.dll is very consistent for DVD/MPEG2 sources. You reference the d2v file. Mpeg2Source("file.d2v")

    DVD's from DVD-video should always be 4:2:0 , so ConvertToYV12(interlaced=true) should not be required, but it wont hurt to keep it in there

    I downloaded BestAudioSource and it works well stand-alone, but how do i muxe tracks in Avisynth+, please?
    AudioDub like you have, but you need to specify which video you're referring to since you have file1=audiodub, there is no "implied last" in the script, so you have to call "file1"

    Code:
    SetFilterMTMode ("QTGMC", 2)
    audiofile1 = BestAudioSource(".mpg", track=-1)
    videofile1 = FFVideoSource(".mpg", track=-1,threads=1)
    file1 = audiodub(videofile1,audiofile1)
    
    file1
    ConvertToYV12(interlaced = true)
    AssumeTFF()
    QTGMC(preset="Slower", EdiThreads=3)
    #Spline64Resize(720,576)
    Prefetch(15)
    Too high prefetch can actually produce slower results, it depends on system, script. It's one bad thing about avisynth multithreading issue, the "ideal" number can vary
    Quote Quote  
  5. Originally Posted by poisondeathray View Post
    Does DGSource have better results than QTGMC?
    It would be DGSource vs. FFVideoSource => those are source filters. QTGMC is primarily a deinterlacer , different category . DGSource using DGIndexNV to index (and relying on DGDecodeNV.dll for the decoder) is generally better, more consistent compared to FFVideoSource, but DGSource only supports certain types of compression supported by NVDec. FFVideoSource can decode many more types of files . For DGSource you reference the dgi file - DGSource("file.dgi")

    MPEG2Source, using DGIndex, relying on DGDecode.dll is very consistent for DVD/MPEG2 sources. You reference the d2v file. Mpeg2Source("file.d2v")

    DVD's from DVD-video should always be 4:2:0 , so ConvertToYV12(interlaced=true) should not be required, but it wont hurt to keep it in there

    I downloaded BestAudioSource and it works well stand-alone, but how do i muxe tracks in Avisynth+, please?
    AudioDub like you have, but you need to specify which video you're referring to since you have file1=audiodub, there is no "implied last" in the script, so you have to call "file1"

    Code:
    SetFilterMTMode ("QTGMC", 2)
    audiofile1 = BestAudioSource(".mpg", track=-1)
    videofile1 = FFVideoSource(".mpg", track=-1,threads=1)
    file1 = audiodub(videofile1,audiofile1)
    
    file1
    ConvertToYV12(interlaced = true)
    AssumeTFF()
    QTGMC(preset="Slower", EdiThreads=3)
    #Spline64Resize(720,576)
    Prefetch(15)
    Too high prefetch can actually produce slower results, it depends on system, script. It's one bad thing about avisynth multithreading issue, the "ideal" number can vary
    Hello,

    thanks so much for all the inputs.. I'm not very technical so it took me a minute to crack, but it seems i got it working.

    DGSource:

    I think i got it working. i opened file in DGIndexNV, did not deinterlace it and saved as .dgi. Then i adjusted the script to reference .dgi instead of .mpg. This would make the encoding better? For Avi/mpeg2 files, I'll use this. for mp4 and others, ill sourcevideo.
    Side Question: Is QTGMC still superior to Deinterlacing in DGIndex?

    SetFilterMTMode ("QTGMC", 2)
    audiofile1 = BestAudioSource(".mpg", track=-1)
    videofile1 = DGSource(".dgi")
    file1 = audiodub(videofile1,audiofile1)

    file1
    ConvertToYV12(interlaced = true)
    AssumeTFF()
    QTGMC(preset="Slower", EdiThreads=3)
    Spline64Resize(768,576)
    Prefetch(15)

    AudioDub

    Thanks. that has fixed the issue You're the best. The audio is now working fine. In Avidemux, i have to choose lame mp3 instead of AAC (lav) otherwise audio crashes, but i do not hear any difference in quality.

    High Prefetch

    I have high CPU (I think?) = Intel(R) Core(TM) i7-10750H CPU @ 2.60GHz, 2592 Mhz, 6 Core(s), 12 Logical Processor(s). And havent noticed slower conversion so hopefully it will stay that way, as long as the interlaced order works fine.

    Thanks again for your tips. You saved me hours and hours of figuring this out! I spent Thursday-Friday googling everything possible and all i got was a headache. So trully thanks from the bottom of my heart. Youre a lifesaver.
    Quote Quote  
  6. Originally Posted by JadHC View Post
    I think i got it working. i opened file in DGIndexNV, did not deinterlace it and saved as .dgi. Then i adjusted the script to reference .dgi instead of .mpg. This would make the encoding better? For Avi/mpeg2 files, I'll use this. for mp4 and others, ill sourcevideo.
    Sometimes, one source filter works better than another. If both work correctly, then they should give very similar results for mpeg2 (slight differences between mpeg2 decoders), but identical for h264, hevc.

    Speed wise, if you're decoding on the GPU, it will save more CPU cycles to filter and encode with GPU, so it should be faster in general to use GPU decoding. But not always, there are exceptions

    Side Question: Is QTGMC still superior to Deinterlacing in DGIndex?
    DGIndex is not a deinterlacer

    DGSource has purevideo deinterlacing using Nvidia, and DGBob which is basically yadif deinterlacing using CUDA

    In general, QTGMC will give better results, more smooth and temporally consistent at the "cost" of slower processing, detail loss, possible blurring and temporal artifacts. There are dozens of settings you can adjust in QTGMC to reduce the side effects or customize results. Purevideo deinterlace, or DGBob will generally be much faster, but have more aliasing and deinterlacing artifacts
    Quote Quote  
  7. Originally Posted by poisondeathray View Post
    Originally Posted by JadHC View Post
    I think i got it working. i opened file in DGIndexNV, did not deinterlace it and saved as .dgi. Then i adjusted the script to reference .dgi instead of .mpg. This would make the encoding better? For Avi/mpeg2 files, I'll use this. for mp4 and others, ill sourcevideo.
    Sometimes, one source filter works better than another. If both work correctly, then they should give very similar results for mpeg2 (slight differences between mpeg2 decoders), but identical for h264, hevc.

    Speed wise, if you're decoding on the GPU, it will save more CPU cycles to filter and encode with GPU, so it should be faster in general to use GPU decoding. But not always, there are exceptions

    Side Question: Is QTGMC still superior to Deinterlacing in DGIndex?
    DGIndex is not a deinterlacer

    DGSource has purevideo deinterlacing using Nvidia, and DGBob which is basically yadif deinterlacing using CUDA

    In general, QTGMC will give better results, more smooth and temporally consistent at the "cost" of slower processing, detail loss, possible blurring and temporal artifacts. There are dozens of settings you can adjust in QTGMC to reduce the side effects or customize results. Purevideo deinterlace, or DGBob will generally be much faster, but have more aliasing and deinterlacing artifacts
    oh no! Yadif! had my share of it! not again. Ill stick with QTGMC.

    But you're right, i did notice that videos are tad less sharp but thought it was in my head. I tried to add Sharpness (1.5-2.0) but the results generate too many artifacts so i ended up using smart sharpness, sharpen edges or warp sharp in Avidemux or VirtualDub2 instead and was able to getter better results. But if theres a way to do it directly in AviSynth+, it would save time.
    Quote Quote  
  8. Yes, there are many other options for sharpening and enhancement options directly in avisynth+ . This is not a full list
    http://avisynth.nl/index.php/Category:Sharpeners

    But you should also play with the many QTMGC settings , such as decreasing the temporal radius .
    http://avisynth.nl/index.php/QTGMC

    I find a fairly "bad" side effect of QTGMC on some sources is overdenoising, (dumb) oversharpening when using default settings. The combination of smoothing,denoising, and sharpening sometimes makes the result look like a painting. I almost always adjust the default settings.
    Quote Quote  
  9. Originally Posted by poisondeathray View Post
    Yes, there are many other options for sharpening and enhancement options directly in avisynth+ . This is not a full list
    http://avisynth.nl/index.php/Category:Sharpeners

    But you should also play with the many QTMGC settings , such as decreasing the temporal radius .
    http://avisynth.nl/index.php/QTGMC

    I find a fairly "bad" side effect of QTGMC on some sources is overdenoising, (dumb) oversharpening when using default settings. The combination of smoothing,denoising, and sharpening sometimes makes the result look like a painting. I almost always adjust the default settings.
    Hi Poisondeathray,

    thank you very much for your help and advice. I highly appreciate it.

    Apologies for the later reply. I was trying to get pyto-flow running on my PC and after installing python, cuda, anaconda, miniconda, make, Cmake and Lua scripts, my computer stopped working due to mysterious reasons... (btw, i still couldnt run pyto-flow in command prompt).

    Anyhoo, i spent last 5 lovely days reinstalling my pc back to factory settings (which was the only way fixing my pc) and now i am back to my one and only love = QTGMC.

    I started working around QTGMC as per your advice, I set TR2=0, I wanted to adjust NoiseProcess and other Denoise settings but i keep receiving following error. I have installed additional optional plug-ins for QTGMC as well as put 32-bit FFTW3.ddl and libfftw3f-3.dll into System32 and 64-bit FFTW3.dll and libfftw3f-3.dll into SysWOW64. I also added both system32 and syswow64 into path.

    The script is referencing Zs_RF_shared line 1620 which is
    input.FFT3DFilter(sigma=sigma, beta=beta, bw=bw, bh=bh, bt=bt, ow=ow, oh=oh, kratio=kratio, sharpen=sharpen, scutoff=scutoff, svr=svr, smin=smin, smax=smax, measure=measure, interlaced=interlaced, wintype=wintype, pframe=pframe, px=px, py=py, pshow=pshow, pcutoff=pcutoff, pfactor=pfactor, sigma2=sigma2, sigma3=sigma3, sigma4=sigma4, degrid=degrid, dehalo=dehalo, hr=hr, ht=ht , plane=plane, ncpu=ncpu) }
    }
    Do you know what my computer is trying to tell me? I ran out of ideas.
    Image Attached Thumbnails Click image for larger version

Name:	Untitled.jpg
Views:	58
Size:	205.4 KB
ID:	69132  

    Quote Quote  
  10. Originally Posted by JadHC View Post
    put 32-bit FFTW3.ddl and libfftw3f-3.dll into System32 and 64-bit FFTW3.dll and libfftw3f-3.dll into SysWOW64.
    x64 dll's go in the System32 directory, x86 dll's go in the SysWOW64
    Quote Quote  
  11. Originally Posted by poisondeathray View Post
    Originally Posted by JadHC View Post
    put 32-bit FFTW3.ddl and libfftw3f-3.dll into System32 and 64-bit FFTW3.dll and libfftw3f-3.dll into SysWOW64.
    x64 dll's go in the System32 directory, x86 dll's go in the SysWOW64
    oh wow, thats not very intuitive. I followed ur instructions and it worked like a charm (thanks a lot).

    I also changed settings to QTGMC as per your advice to reverse strong denoising (hopefully i got it right), and tested it on a video I ran before. With the new settings, the quality is stellar. The image is very sharp without unnecessary blurring. I did not even have to use a sharpener. Surprisingly, it does not slow down the conversion that much and when i ran the video via Topaz, the upscaling from 420p to 1080p was flawless. It perfectly upscaled and sharpened the video enhancing the quality and details without generating artifacts in wrong places (prior attempt was generating artifacts in all the wrong places without enhancing the right details). I'm trully dumbfounded. Trully thank you.

    QTGMC(preset="Slower", SubPel=2, SubPelInterp=2, TR2=0, FPSDivisor = 2, NoisePreset="Slower", NoiseProcess = 2, Denoiser="dfttest", NoiseTR=2, ShutterBlur=3, EdiThreads=3)
    Prefetch(10)
    Quote Quote  
  12. I like these settings most.

    QTGMC(preset="slow", matchpreset="slow", matchpreset2="slow", fpsdivisor=2, sourcematch=3, tr1=2, tr2=1, NoiseTR=2, sharpness=0.1)
    Quote Quote  
  13. Originally Posted by killerteengohan View Post
    I like these settings most.

    QTGMC(preset="slow", matchpreset="slow", matchpreset2="slow", fpsdivisor=2, sourcematch=3, tr1=2, tr2=1, NoiseTR=2, sharpness=0.1)
    Hi KillerTeenGohan,

    thanks a lot for your reply This is really helpful. I tried to combine your settings with mine (script below) and I think i might have overdone it (it now takes 4 hours to process 15 min video so I think ill try to find middle-way). Thanks for sharing your code, this is really helpful and Ill be tweaking it to get the best results. Highly appreciate your help

    ConvertToYV12(interlaced = true)
    AssumeTFF()
    QTGMC(preset="Slower", matchpreset="slow", matchpreset2="slow", sourcematch=3, SubPel=2, SubPelInterp=2, TR1=2, TR2=0, NoisePreset="Slower", NoiseProcess = 2, Denoiser="dfttest", NoiseTR=2, ShutterBlur=3, sharpness=0.1, EdiThreads=3)
    Prefetch(10)
    Quote Quote  



Similar Threads

Visit our sponsor! Try DVDFab and backup Blu-rays!