Go Back    Forum > Digital Video > Video Project Help > Edit Video, Audio

Reply
 
LinkBack Thread Tools
  #1  
08-22-2021, 07:57 PM
Winsordawson Winsordawson is offline
Free Member
 
Join Date: Sep 2010
Location: Behind you
Posts: 473
Thanked 29 Times in 25 Posts
I am reacquainting myself with Avisynth after being away for a while. There is a video with a skewed up color tone requiring that the hue angle be adjusted. That cannot be done in Avisynth, but it is an easy fix in Premiere.

Is it recommended to first adjust the hue angle in Premiere and then export to a lossless format to Avisynth, or first use Avisynth to correct other problems and then export as a lossless to Premiere? Assuming that the effect in Premiere works on the YUV and not the RGB (if not, then I would use Premiere last), I prefer using Premiere first because Avisynth has more options for final output, and the current color scheme is not easy on the eyes.

On an unrelated note, I installed Avisynth on a new PC and avsinfotools would either detect the 32 bit or 64 bit version, but not both. It would throw an error that there were 32 bit plugins in the 64 bit folder, or vice versa. I tried every combination in the registry but while I could make one work I could never make them both produce no error. Finally I ran the installation where I only installed the 32 bit version first, then ran the installation again for the 64 bit. Avsinfotools now detects both as well as the location of their respective plugins.

This might be fine for now, but will I encounter problems down the road? When I load a new script in avsPmod I get error messages of the sort

Code:
Error parsing Func plugin parameters: unknown character 'n'
Error parsing ConditionalSelect plugin parameters: unknown character 'n'
Error parsing WriteFileEnd plugin parameters: unknown character 'n'
Error parsing WriteFileEnd plugin parameters: + without preceeding argument
Error parsing propSet plugin parameters: unknown character 'a'
Error parsing propSetInt plugin parameters: unknown character 'n'
Error parsing propSetFloat plugin parameters: unknown character 'n'
However, the video still runs. Honestly, time is not so critical that I need the 64 bit version unless it is worth it. Thanks.
Reply With Quote
Someday, 12:01 PM
admin's Avatar
Ads / Sponsors
 
Join Date: ∞
Posts: 42
Thanks: ∞
Thanked 42 Times in 42 Posts
  #2  
09-08-2021, 09:37 PM
lordsmurf's Avatar
lordsmurf lordsmurf is offline
Site Staff | Video
 
Join Date: Dec 2002
Posts: 13,503
Thanked 2,449 Times in 2,081 Posts
Skewed color, interesting, would like to see good sample of this. Both still and clip.

It depends on the problem.
Premiere > Avisynth, probably, for this exact issue.
Avisynth > Premiere is more usual.

While important to acknowledge colorspace, too much is made of it in recent years. Even pros don't do the wacky anal adherence to colorspace that some hobbyists and amateurs do. (It's even more ridiculous when they have low quality everywhere else, but "OMG, not colorspace! The horror!") Obviously you want to maintain proper colorspace, but sometimes it's just going to be possible. There's no reason to stress over it.

I don't like Avisynth+ 32-bit, nothing but problems.
I stick to +64 and official 2.6.
I no longer use the MT, as it has too many errors, including bad frames in the video output.

I never feel the need to use AvsInfotool. The one time I tried, some years ago, it insisted I had an error, and yet I did not. I found it completely useless. (I'm not alone here. Search Google for "Avsinfotools", and on pg1, you'll see summary comments like "Despite the error message in 32-bit AVSInfoTool, QTGMC will now work in both modes" and "I get a Runtime error from AVSInfoTool, but still work fine at AvsPmod". So even without looking for errors, just the name of the tool itself brings up errors. So let that sink in.)

- Did my advice help you? Then become a Premium Member and support this site.
- For sale in the marketplace: TBCs, workflows, capture cards, VCRs
Reply With Quote
  #3  
09-19-2021, 08:08 PM
Winsordawson Winsordawson is offline
Free Member
 
Join Date: Sep 2010
Location: Behind you
Posts: 473
Thanked 29 Times in 25 Posts
Thanks. I was trying to change the registry entries for my 32 and 64-bit plugins to satisfy avsinfotools but after your experience I may reinstall everything and ignore the errors it brings up.

Yes, I'll be sure to post samples once I have done the best I can with it. I prefer Premiere first since I can color correct like I am in the 21st century, unlike with Avisynth. Plus, it turns out that the color tools in Premiere such as RGB curves and Three-Way Color Corrector work in the YUV space. I'm sure it isn't perfect, but it will do.

By the way, does anyone know where to find the SpotLessUV plugin people are talking about? I found a Doom thread by StainlessS but it only had the Spotless version. Does it work better than the variants of RemoveSpotsMC()?
Reply With Quote
  #4  
09-19-2021, 11:04 PM
lordsmurf's Avatar
lordsmurf lordsmurf is offline
Site Staff | Video
 
Join Date: Dec 2002
Posts: 13,503
Thanked 2,449 Times in 2,081 Posts
Something else I recently learned about is this: https://www.videohelp.com/software/A...al-File-System
Not tried it yet.
Quote:
Some of the scenarios where this is useful include:
- Serving data from 32 bit Avisynth and plugins to 64 bit encoders and media players.
- Serving data through file shares to remote systems, potentially running non Windows operating systems.
- Breaking complex scripts into stages that can be run concurrently on multiple systems.
- Serving data to encoders or players that do not support VFW or DirectShow.
Now then, that's not directly addressing anything here, but an adjacent issue, from the usual menu of Avisynth 32/64 problems. And it still won't change you needing x64 filters for x64 versions, x86 for x86. But when it comes to Premiere x64 seeing an x86 serve, this may do it.

- Did my advice help you? Then become a Premium Member and support this site.
- For sale in the marketplace: TBCs, workflows, capture cards, VCRs
Reply With Quote
The following users thank lordsmurf for this useful post: Winsordawson (09-20-2021)
  #5  
10-11-2021, 09:16 AM
Winsordawson Winsordawson is offline
Free Member
 
Join Date: Sep 2010
Location: Behind you
Posts: 473
Thanked 29 Times in 25 Posts
Thanks--that is something to look into.

I appear to be not understanding the syntax logic of Avisynth. The below syntax works, but I don't know why. I would think once you write "a" that last/current clip becomes "a" and is such being filtered. But in reality, this syntax filters the "b" video, leaving "a" intact. I then provided an overlay on it. Any thoughts? Thank you.

Code:
video1


separatefields()
a=last   #sets a to be = to video1

a        #sets a as now the current clip?
filter1  #applies filter1 to a
filter2  #applies filter2 to a
b=last   #sets filtered clip a to = b

overlay(a,b)    #overlays clip b onto clip a
weave()
Reply With Quote
  #6  
10-14-2021, 12:56 PM
Winsordawson Winsordawson is offline
Free Member
 
Join Date: Sep 2010
Location: Behind you
Posts: 473
Thanked 29 Times in 25 Posts
I might as well post my progress with this. This is a screenshot of the original clip that had to be corrected in Premiere:

SEE original.jpg ATTACHED (Images inserted into the post would not show up).

It is not from a 50's b-movie....There are several issues with the whole video (only a snippet shown here). First is the greenish hue, even after correcting the hue angle for the skin tone.

color_before.jpg

I tried to remove the green completely from the background, and the ColorPic showed that after the correction the background had even low levels of R,G, and B. But then the dress became reddish. I can't seem to prevent that if I change the background. Maybe trying a secondary color correction on the dress?

color_after.jpg

Ghosting also exists, as seen here
ghost_before.jpg

Since deghosting filters in Avisynth have rarely helped (me at least), I used a secondary color correction to remove the green.

ghost_after.jpg

It is not perfect, but less noticeable. The other issue is the haloing around the woman's shoulder in this photo and in the attached video. This was after using MergeLuma and colorshift. Is there a colorshift equivalent for luma?

luma_issue.jpg

MergeLuma works, but of course it destroys the video and makes it looks like an impressionist painting.

Here is my script. Since FixRipsP2() is destructive, I only used it on the left edge of the video. If I keep that overlay in my script too long without commenting it out, Avisynth will crash. KNLMeansCL worked well on the remaining dropouts. Unfortunately, it also blurred the detail in the woman's hair, and my preference is always to keep detail rather than fix everything. TemporalDegrain2() on its default settings seems to help without removing detail.

Strangely, RemoveSpotsMC2() was far worse than RemoveSpotsMC(). RemoveSpotsMC3() is too slow.

Code:
video1 = AVISource("Dance.avi").AssumeBFF
audio1 = video1
video1

#Applies FixRipsP2() to left edge

separatefields()
a=last

a
crop(20,0,30, 0)

FixRipsP2()
b=last

overlay(a,b,x=20, mode="lighten")
weave()


ChromaShift(C=4, L=2)


SeparateFields()


e=SelectEven().RemoveSpotsMC().RemoveSpotsMC()#.KNLMeansCL(d=1, a=2,s=8,h=3.2)
o=SelectOdd().RemoveSpotsMC().RemoveSpotsMC()#.KNLMeansCL(d=1, a=2,s=8,h=3.2)
Interleave(e, o).AssumeBFF()

FAN(lambda=5)


source = last
super=source.MSuper(pel=2, sharp=2)
backward_vec2 = MAnalyse(super, isb = true, delta=2, overlap=4,blksize=8)
backward_vec1 = MAnalyse(super, isb=true, delta=1, overlap=4,blksize=8)
forward_vec1 = MAnalyse(super, isb=false, delta=1, overlap=4,blksize=8)
forward_vec2 = MAnalyse(super, isb= false, delta=2, overlap=4,blksize=8)
MDegrain2(super, backward_vec1, forward_vec1, backward_vec2, forward_vec2, thSAD=400)

TemporalDegrain2()


FixChromaBleedingMod()

MergeChroma(aWarpSharp2(depth=30).aWarpSharp2(depth=30))
TurnRight()
MergeChroma(aWarpSharp2(depth=40).aWarpSharp2(depth=40))
TurnLeft()
SmoothUV(radius=2, field=false)

Weave()

#TemporalDegrain2(postFFT=3) #too strong

crop(22,0,-6,-8)
AddBorders(14,4,14,4)

trim(2450,2600)
return last
The before video and after videos will be attached to the next posts. Thanks for any suggestions, comments, criticisms, and diatribes.


Attached Images
File Type: jpg original.jpg (44.8 KB, 5 downloads)
File Type: jpg luma_issue.jpg (34.6 KB, 5 downloads)
File Type: jpg ghost_before.jpg (53.5 KB, 4 downloads)
File Type: jpg ghost_after.jpg (51.9 KB, 4 downloads)
File Type: jpg color_after.jpg (34.2 KB, 5 downloads)
File Type: jpg color_before.jpg (31.1 KB, 4 downloads)

Last edited by Winsordawson; 10-14-2021 at 01:17 PM.
Reply With Quote
  #7  
10-14-2021, 01:11 PM
Winsordawson Winsordawson is offline
Free Member
 
Join Date: Sep 2010
Location: Behind you
Posts: 473
Thanked 29 Times in 25 Posts
Here is the before and after.


Attached Files
File Type: avi intrepretative dance before.avi (75.59 MB, 11 downloads)
File Type: avi intrepretative dance after H264.avi (6.91 MB, 8 downloads)
Reply With Quote
  #8  
10-16-2021, 11:27 AM
lollo2 lollo2 is offline
Free Member
 
Join Date: Mar 2013
Location: Italy
Posts: 673
Thanked 189 Times in 163 Posts
Just few comments after a quick check:

- no need to use separatefields(), your video seems progressive

- give RemoveDirtSMC a try for horizontal stripes defect, with a limit=30/50 and 2 calls

- TemporalDegrain2 uses MDegrain with temporal radius=1 internally, so no need to call MDegrain2 before. Eventually use TemporalDegrain2(degrainTR=3)

- Not sure if KNLMeansCL is a spatial only denoiser (to avoid double usage with TD2); if you like it you may use it to build a prefiltered clip to create better motion vectors; this is not possible with TemporalDegrain2 because it uses QTGMC approach for motion estimation. Possible using old version, i.e. TemporalDegrain(..., denoise=clip.KNLMeansCL(), ...)

- Or you can use KNLMeansCL in post-processing inside TD2 with postFTT=4, avoiding sometimes destructive dfttest call when using postFTT=3

- Try LSFmod, SeeSaw or CAS instead all aWarpSharp2 calls, eventually including chroma sharpening.

Difficult clip to restore, I did not try all this on your clip, hope it helps...
Reply With Quote
  #9  
10-16-2021, 12:17 PM
Winsordawson Winsordawson is offline
Free Member
 
Join Date: Sep 2010
Location: Behind you
Posts: 473
Thanked 29 Times in 25 Posts
Thanks lollo2--you have given me a lot to work with! I will report back when I go through all of your suggestions.

I noticed that for some reason my FixRipsP2() mask was not actually applied in the after clip. I will make sure it is in the next updated, but do you think it is wise to use if nothing else helps the left side of the clip (to avoid filtering everything)?

Just FYI, the original clip is in fact interlaced.
Reply With Quote
  #10  
10-16-2021, 01:27 PM
lollo2 lollo2 is offline
Free Member
 
Join Date: Mar 2013
Location: Italy
Posts: 673
Thanked 189 Times in 163 Posts
Quote:
do you think it is wise to use if nothing else helps the left side of the clip (to avoid filtering everything)
Absolutely. The best is to apply a dedicated filter in the section of the video where is required, or, as in your case, in the part of the frame requiring it.
If you fail, it may be more appropriate to "mask" the portion having problems with black pixels rather that applying a not needed filter on the whole video.

Quote:
Just FYI, the original clip is in fact interlaced.
You are right, I am not familiar with BFF videos and I made a mistake.
In this case you can also try something like
Code:
AssumeBFF().nnedi3(field=-2)
<filtering>
AssumeBFF().SeparateFields().SelectEvery(4,0,3).Weave()
it is more effective than Separatefields().SelectXXX.<filtering>
In fact, is mandatory for SpatialTemporal filters but also recommended for pure Temporal filtering.
Reply With Quote
  #11  
10-16-2021, 01:48 PM
Winsordawson Winsordawson is offline
Free Member
 
Join Date: Sep 2010
Location: Behind you
Posts: 473
Thanked 29 Times in 25 Posts
Thanks again. I will have to read more about it. Most of the info on Avisynth usage is spread all over the place.

Since you seem knowledgeable, would you know where my misunderstanding was regarding post #5 above?
Reply With Quote
  #12  
10-16-2021, 03:45 PM
lollo2 lollo2 is offline
Free Member
 
Join Date: Mar 2013
Location: Italy
Posts: 673
Thanked 189 Times in 163 Posts
Quote:
where my misunderstanding was regarding post #5 above
last is always the video at the current moment in time of the script:

Code:
AviSource("intrepretative dance before.avi")
# your current video is "intrepretative dance before.avi"

separatefields() 
# your current video is now "intrepretative dance before.avi" with separate fields

a=last
# your current video above (=last) is now associated to variable a

# <filtering>
# for example filtering is: add text filtering in blue on the upper right corner
subtitle(a,"filtering",size=60,align=9,text_color=color_blue)
# the filtering is applied to last (=a)
# you current video is a+filter

b=last
# your current video above (=last) is now associated to variable b

# thus a="intrepretative dance before.avi" with separate fields
# and b="intrepretative dance before.avi" with separate fields plus filtering

overlay(a,b)
# with this command you place b on top of a

weave()
# with this command you recombine the fields

c=last
# your current video above (=last) is now associated to variable c

stackhorizontal(\
stackvertical(subtitle(a,"a",size=60,align=2),subtitle(b,"b",size=60,align=2)),\
subtitle(c,"c",size=60,align=2))
# this produces the following image:
Immagine.jpg


Reply With Quote
  #13  
10-17-2021, 09:30 AM
lollo2 lollo2 is offline
Free Member
 
Join Date: Mar 2013
Location: Italy
Posts: 673
Thanked 189 Times in 163 Posts
An alternative way to write the previous code is to make explicit assignement at each step, that is boring but helps a lot to well identify all the operations in complex scripts.
I always use this approach.
Code:
video_org=AviSource("intrepretative dance before.avi")

video_org_sep=video_org.separatefields()

video_org_sep_filt=subtitle(video_org_sep,"filtering",size=60,align=9,text_color=color_blue)

video_org_sep_filt_ov=overlay(video_org_sep,video_org_sep_filt)

video_restored=video_org_sep_filt_ov.weave()

return(video_restored)
Reply With Quote
  #14  
10-17-2021, 05:56 PM
Winsordawson Winsordawson is offline
Free Member
 
Join Date: Sep 2010
Location: Behind you
Posts: 473
Thanked 29 Times in 25 Posts
Thanks for the explanation and photo. It appears you are taking on Sanlyn's role! The only issue with the second method is, unless Avisynth is different, all of those video file variables should be stored in memory separately. If the filtering is too much, Avisynth might crash. It is easier to keep track of, however.
Reply With Quote
  #15  
10-18-2021, 04:46 AM
lollo2 lollo2 is offline
Free Member
 
Join Date: Mar 2013
Location: Italy
Posts: 673
Thanked 189 Times in 163 Posts
AviSynth is a frame server!

http://avisynth.nl/index.php/The_scr...ence_of_events

http://avisynth.nl/index.php/The_scr...e_filter_graph

For temporal radius > 1, is actually a frames server

If you look to "Frame caching and the effect on splitting filter graph's paths" chapter in http://avisynth.nl/index.php/The_scr...considerations you can see how a "cache" filter is created and used after each call.
Reply With Quote
  #16  
10-18-2021, 11:04 AM
Winsordawson Winsordawson is offline
Free Member
 
Join Date: Sep 2010
Location: Behind you
Posts: 473
Thanked 29 Times in 25 Posts
Thank you for the informative links. I don't think I make use of runtime scripts, so from the performance page it seems that the best I can do (absent creating an intermediate file for some filters) for reducing the slowdown in my Overlay with FixRipsP2() is to load all of the plugins manually and turn off autoload. Does that seem right?
Reply With Quote
  #17  
10-18-2021, 12:05 PM
lollo2 lollo2 is offline
Free Member
 
Join Date: Mar 2013
Location: Italy
Posts: 673
Thanked 189 Times in 163 Posts
It won't be a significant improvement in term of speed, but in a script I only load the necessary plugins and avoid "autoload" procedures.

You can try some MT modes to speed-up your processing if that's an issue (I am not familiar with thems, so i cannot help, sorry)
Reply With Quote
  #18  
10-18-2021, 02:05 PM
lordsmurf's Avatar
lordsmurf lordsmurf is offline
Site Staff | Video
 
Join Date: Dec 2002
Posts: 13,503
Thanked 2,449 Times in 2,081 Posts
Quote:
Originally Posted by Winsordawson View Post
to load all of the plugins manually and turn off autoload. Does that seem right?
I don't think I've ever tested this, at least not that I can remember. In fact, I completely forgot about this. I don't really see how it could be an issue, and would affect speed.

In terms of speed, there's not much you can do beyond per-core CPU speed, SSD, and sometimes GPU. Everything else is just slivers of % of speed. Certain MT/cache functions have huge negatives, such as glitching the video, which is why (for example) I never use QTGMC in the 32-bit version (cached MT is bad, uncached too slow).

I'm all for speeding up Avisynth, but some things simply do not work as claimed.

- Did my advice help you? Then become a Premium Member and support this site.
- For sale in the marketplace: TBCs, workflows, capture cards, VCRs
Reply With Quote
  #19  
10-18-2021, 08:22 PM
Winsordawson Winsordawson is offline
Free Member
 
Join Date: Sep 2010
Location: Behind you
Posts: 473
Thanked 29 Times in 25 Posts
Quote:
Originally Posted by lordsmurf View Post
In terms of speed, there's not much you can do beyond per-core CPU speed, SSD, and sometimes GPU. Everything else is just slivers of % of speed. Certain MT/cache functions have huge negatives, such as glitching the video, which is why (for example) I never use QTGMC in the 32-bit version (cached MT is bad, uncached too slow).

I'm all for speeding up Avisynth, but some things simply do not work as claimed.
I have a 2 TB SSD, an 8 core i7, and a RTX 3080. But add a overlay mask with FixRips with a few F5s, and I am looking at a crash The speed of the refresh is fine, however.

Admittedly, I am only use 32 bit, but I would think that would only affect the speed of the process, not the rate of crashes. I avoid 64 bit because of not every filter is supported. I think Sanlyn also avoided the 64 bit version.
Reply With Quote
  #20  
11-21-2021, 09:20 PM
Winsordawson Winsordawson is offline
Free Member
 
Join Date: Sep 2010
Location: Behind you
Posts: 473
Thanked 29 Times in 25 Posts
I had some time to apply some of the advice here. TemporalDegrain2 with deGrainTR=3 did make an improvement. But whilst trying to find RemoveDirtSMC() (It is difficult to find the correct version of videoFred's fliters, since when I try to download it from Doom9 my antivirus blocks it), I came across SpotLess, which is quite magical in action (and quick). TemporalDegrain2 did not make a significant improvement after SpotLess, and it also a bit slow. Neither did two calls to RemoveDirtSMC().

I didn't apply nnedi deinterlacing because I want to preserve as much detail as possible without any interpolation of the other fields.

I tried LSFMod and CAS with MergeChroma but it seemed worse. Do you have a suggestion on what parameters to use? I also found your YT channel useful (assuming it is the same person).

Code:
video1 = AVISource("interpretative dance color corrected.avi").AssumeBFF
video1

SeparateFields()

e=SelectEven().SpotLess(RadT=5, ThSAD=1100, Blksz=16).RemoveDirtSMC(25)
o=SelectOdd().SpotLess(RadT=5,ThSAD=1100, Blksz=16).RemoveDirtSMC(25)
Interleave(e, o).AssumeBFF()

FAN(lambda=5)

FixChromaBleedingMod()

MergeChroma(aWarpSharp2(depth=30).aWarpSharp2(depth=30))
TurnRight()
MergeChroma(aWarpSharp2(depth=40).aWarpSharp2(depth=40))
TurnLeft()

SmoothUV(radius=2, field=false)

Weave()

crop(22,0,-6,-8)
AddBorders(14,4,14,4)

trim(2450,2600)
return last
Strangely, large block sizes worked better (from 8 to 12 to 16 saw an improvement), but perhaps I am just not understanding the code correctly. ThSAD over 1100 made no difference, so I kept it as low as possible to prevent unwanted changes.

You will not see it in the example clips, but secondary color correction was successful in removing the type of ghost I encountered in this video. Blacks are a bit milky because the lack of a fill light created harsh shadows. Reducing the shadows too much would affect the skin tones that are in the shadows.

Am I mistaken, or is that a spot on the camera itself in the lower third, left hand side of the final video? I am surprised Avisynth kept it!

Thanks!

Before
before_ghost_correction.jpg

After
You must be logged in to view this content; either login or register for the forum. The attached screen shots, before/after images, photos and graphics are created/posted for the benefit of site members. And you are invited to join our digital media community.


Attached Files
File Type: avi interpretative dance ORIGINAL.avi (4.87 MB, 1 downloads)
File Type: avi interpretative dance color corrected.avi (4.96 MB, 1 downloads)
File Type: avi interpretative dance FINAL.avi (4.34 MB, 1 downloads)
Reply With Quote
Reply




Tags
avsinfotools

Similar Threads
Thread Thread Starter Forum Replies Last Post
Adobe Premiere CS3 for compressing video? JoRodd Edit Video, Audio 16 05-11-2017 09:49 PM
Is there an alternative to Adobe Premiere? rappy Edit Video, Audio 1 12-27-2011 12:31 PM
Help with Adobe Premiere and Huffyuv Files jrodefeld Edit Video, Audio 2 12-04-2011 01:50 PM
Wow, Adobe Premiere Pro CS4 support RMVB anllyy Encode, Convert for streaming 2 01-17-2010 11:05 AM

Thread Tools



 
All times are GMT -5. The time now is 05:56 PM