shundi82

joined 1 year ago
[–] [email protected] 4 points 3 days ago

I guess God and Homer approach problems like these in a similar fashion:

https://youtu.be/G05-4wrN8bM

[–] [email protected] 7 points 5 days ago* (last edited 5 days ago)

If you're German and old enough to remember Otto, then chances are, you'd thought of this classic bit when looking at this post:

Reinerhaltung der Deutschen Sprache — Die Otto-Show IV (1976)

[–] [email protected] 6 points 1 week ago

Here you go create another fable.

[–] [email protected] 12 points 1 week ago* (last edited 1 week ago) (1 children)

Me back in 1990 every Sunday at 4:30 AM:

"Wings of silver, nerves of steel… (Silverhawks!) Partly metal, partly real… (Silverhawks!) Soaring through the highway of the heavens in their flight, SilverHawks, a rainbow in the night!"

https://youtu.be/M0MsPABRHCM

[–] [email protected] 2 points 3 weeks ago* (last edited 3 weeks ago)

OK, followup to my last "PS". Even though no one asked, but I've got some upvotes:

Here's a short function I didn't test extensively (can't post the one I use, because that one's specific to our work and is intertwined with more of our functions like checking a file's extension and properties to automatically determine its field order and if it needs to be deinterlaced):

It worked in a few short tests, so it should be OK, but if anyone notices a problem, feel free to add to that:

function tff_for_all(clip c, string "fieldorder") {
  #Usage if source is TFF: tff_for_all("tff") | else if BFF or unknown (will assume BFF): tff_for_all() or tff_for_all("bff")
  fieldorder = default(fieldorder, "bff")
  c
  fieldorder == "bff" ? propSet("_FieldBased", 1).AssumeBFF().DoubleWeave().SelectOdd() : last
  propSet("_FieldBased", 2).AssumeTFF()
}
[–] [email protected] 3 points 3 weeks ago* (last edited 3 weeks ago)

PS: Since AVIs don't store the field order, QTGMC+ will fail at detecting the right field order.

AVISynth+ will assume BFF, which is correct for pretty much any DV (there are very few exceptions). But QTGMC+ will try to be clever and assume the field order on its own. And might determine your field order to be TFF (since that is its default).

If you need it, I'll provide you with a script to change the field order to always be TFF, so QTGMC+ will always work as intended.

As a nice bonus, that way you can also run SMDegrain on the interlaced material, if you don't need heavy prefiltering (making it twice as fast).

[–] [email protected] 10 points 3 weeks ago* (last edited 3 weeks ago) (2 children)

Professional here, who's been doing it for 20 years as part of his job.

Use your cam's DV in/out port (should be where you'd also find the svideo port according to your cam's manual).

Install a FireWire card into your PC (or an addon card, if you're using a laptop).

Connect both via a FireWire cable (usually 6 pin to 4 pin).

If your tapes are HD, stick to Sony's software.

If your tapes are SD, use ScenAlyzer Live aka sclive (free and will even work on Windows 11, copy the link into your browser, if your app won't open the link - it's very old, so http only):

http://www.scenalyzer.com/

If you want to transfer each tape as one single AVI file, set the Audio sample rate to 44.1 kHz within sclive - that way the audio will match across every frame, no matter how it was recorded. Trust me, it's the only way to not have audio run out of sync once you convert into anything but DV (since DV stores that info within each individual frame, so the video/audio format can change from frame to frame unlike most modern codecs).

Alternatively you can automatically transfer scene by scene and convert each scene's audio sample rate individually before editing/combining them. Just be aware, that in a scene to scene transfer you might end up with >200 scenes per tape. Which would make the next steps harder (or you'd need some batch preprocessing).

Short tldr for the following part, where I just go through my ideal setup without much of a "how to" explanation:

If you're OK with not being up to date and "just" using QTGMC (without the +), here's a tutorial on how to set it all up (only watched the first few minutes, but he sounds competent and the comments are very positive, too):

https://youtube.com/watch?v=C4PyyQoz6eo

End of the tldr.

Next is deinterlacing. And nothing compares to QTGMC+, if you have the patience to set it up:

https://github.com/Dogway/Avisynth-Scripts/tree/master/MIX%20mods

Make sure to also download all the filters it depends on and, of course, setup AVISynth+:

https://github.com/AviSynth/AviSynthPlus/releases

For importing + indexing the DV AVI I prefer LSmash (LWLibAV):

https://github.com/HomeOfAviSynthPlusEvolution/L-SMASH-Works/releases/tag/1194.0.0.0

AVISynth+ will also allow you to deal with crappy DCT artifacts, if you have them (vertical lines and/or blocky/bleeding colors - especially red) by rotating the image by 90°, cleverly blending lines and rotating back 270°.

And really, AVISynth+ is great for every other step, you might want to add:

Denoising via SMDegrain + pre filter, getting more details out of highlights via gamma/levels manipulation, deshake, deflicker, sharpen, dehalo, deringing, crop, trim and of course resizing (there's even more stuff like tossing bad frames and interpolating new clean ones, but you get the idea).

Regarding resizing within AVISynth+: I'm not a fan of artificial upscaling in videos unless I'm desperate (R-ESRGAN etc), so I mostly stick to upscaling via Spline64Resize. It's good, it's fast, it's reliable, it doesn't introduce ringing.

A close second for upscaling would be nnedi3_rpow2. It's usually a teensy bit clearer than Spline64Resize, but extremely slow in comparison (and thus usually not worth it to me, but you might feel differently).

Even though you might hear people say, that upscaling is useless, imho you should always upscale SD material to at least 720p (960x720 at 4:3, 1280x720 at 16:9). For archival stuff I usually go up to 1080p (1440x1080 at 4:3, 1920x1080 at 16:9). It gives you better results at the same bitrate and stuff like -tune grain (see bottom) can really work its magic.

Once you've set everything up and created your script, you just need to pipe the script into the converter of your choice. Most will prefer ffmpeg (I use python to pipe as a watchdog, but that might be too elaborate for your case):

https://www.ffmpeg.org/download.html

There's no one ideal way to convert, but I prefer good + fast + reliable. So h264, default preset (file size will be larger than slow etc, but medium/default has a higher compatibility), -tune grain, -crf 17 to -crf 22 (17 + tune grain: no visible loss, 22 + tune grain: still no discernible visible loss to me at 1080p, just remember: the smaller the number, the larger the file), -movflags faststart.

If you didn't set up your color space/format in AVISynth+ already, set it up in ffmpeg. For the best compatibility I usually go with -pix_fmt yuv420p, but if you'd rather go with 422 or higher, you can do that. Just make sure to take that into account when preprocessing via AVISynth+ or anything else.

For audio I'd go with -acodec aac -ab 192k -ar 48000 -ac 2.

As a container I prefer MP4 over MKV, again for compatibility reasons.

[–] [email protected] 32 points 1 month ago

Made me think of Stewie as Darth Vader choking a black dude and the black dude's like: "But you're choking my..." (Implying that it's not the neck, that's choked). And Stewie says: "I know. But I'll continue the choking. Because I'm angry with you."

But I couldn't find the clip, so I guess it'll just be a trip down memory lane for some old farts like me. For everyone else too young to remember, I've brought this picture:

[–] [email protected] 32 points 1 month ago (1 children)

I like its answers and its "fine, have it your way, whatever" attitude at the end of your conversation.

[–] [email protected] 2 points 1 month ago

It would have been even better, if I'd said:

"An excellent source of irony."

But alas, I'm not that witty on the spot. :-P

[–] [email protected] 30 points 1 month ago* (last edited 1 month ago) (1 children)

/********** Setting up the fkuArray **********/

fkuArray = array(...

[–] [email protected] 84 points 1 month ago* (last edited 1 month ago) (2 children)

Oh, the irony. :D

view more: next ›