I’ve recently started digitizing my mother-in-law’s collection of home movies. What I would love is some recommendations or tweaks I can do to improve the quality and remove any combing or minimize static. I am not particularly concerned with audio quality, but I’ll list it below as well.
And so far I’m enjoying the processes. It’s really fun to see old videos and to learn a bit about video formats and encoding. I’m an amateur when it comes to these kinds of things so I’m learning as I go along. Each tape I make the picture clearer and the file size smaller!
Recording
- Sony Handycam (DCR-TRV27)
- Various DV 60/90 cassette tapes
- Seemingly ran in standard recording mode (tapes are 60 minutes)
VCR
- Elgato USB Analog Video Capture Device
- Handycam’s VCR mode connected via S-Video Cable and 3.5mm audio jack*
* I have ordered a A/V to RCA cable which is the manufacturer’s recommended connection, but unsure about the effects on quality
Software
- OBS for recording the VCR feed
- Downscale Filter: Bicubic (Sharpened scaling, 16 samples)
- Deinterlace - Linear 2x
- 720x540 @ 29.97 FPS (NTSC) (upscaled from 720x480)
- “Indistinguishable Quality, Large File Size”
- .mkv format with H.264 encoder
- Audio Encoder AAC
- Audio 48khz steroe
- Handbrake for re-encoding
- 720x480 @ 29.97 FPS
- H.264 (x264) MKV format
- No additional deinterlacing
- “Constant Quality” set to 20
- Audio Encoder AAC
By chance does the camera have FireWire or usb? That way you may be able to rip cleaner files.
Manual says it has mini USB, but may require software…
I’d look into that a bit, it’s Sony so the software may be out there somewhere. But you may run in to driver or windows version problems.
I’ll check and see if I have a Mini-USB lying around somewhere and plug it in and see what happens. Ideally I’d prefer not to have to install software to record but I suppose if it results in the best video quality that may be the best option
Update: Found the cable, but connecting to the computer results in an unrecognized device. Sony stopped hosting the drivers in 2019, so I fear I may be out of luck in terms of a USB connection - unless I risk downloading a driver off the internet which I’m not inclined to do…
Archive.org would probably be the one place I’d trust if you can find it there
Use a VM if you’re concerned.
Unless there’s something very unique about the camera, the USB is only going to transfer still images off the memory card (and possibly supply a low-res webcam function) - you won’t be able to transfer video through it.
There should be a mini-firewire/mini-DV/iLink port hidden under a flap - that will connect to a firewire port on a desktop, or an older laptop.
If you don’t have access to a firewire port, your existing S-Video/AV cable is still your best option.
Unless anything magical has happened recently, a firewire to USB will not help you for video capture.
One of my friends recently got his wedding video off a digital camera by daisy-chaining cables until he arrived at one that would plug in his computer. I think it took 4 cables.
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):
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 mods
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 upres in videos unless I’m desperate (R-ESRGAN etc), so I mostly stick to Spline64Resize. It’s good, it’s fast, it’s reliable, it doesn’t introduce ringing.
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
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() }
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).