I capture my video using a Datapath Vision-RGB-E1. This is a very powerful capture card. Its onboard Cyclone FPGA allows you to be very flexible with analog video. It allows you to capture nearly reference-quality analog video. For recording, I use custom FFmpeg scripts that grab the feed directly through a CLI, utilizing the Directshow API. For Streaming, I use OBS to scale the video stream.

But first, I have to explain how I actually got the thing to work. The only drivers that worked for me were the 7.11.2 drivers. These drivers don't have the Discord CPU-usage bug that has discord idling at 10% CPU usage constantly, and also allows the Datapath to show up in OBS and work properly. On top of this, I had to downgrade my BIOS in order for the drivers to load for the datapath (I learned later that the BIOS itself wasn't the issue, rather that secure boot was causing the Datapath to not work). Supposedly, according to Extrems, this has to do with 10-bit tag support, as the Datapath must be in a motherboard that supports 10-bit tags in order to function properly. The only quirk with this older driver is that all the color ranges are FULL range in the video crossbar. The options are: YPbPr, HDYPbPr, YCbCr, HDYCbCr, and RGB. YPbPr is rec. 601, and HDYPbPr is rec. 709. Since I am working with component YPbPr, I use YPbPr.

In order to get ultra-sharp capture, you must oversample. Oversampling is the process of capturing analog video with a horizontal size of 4 times its horizontal sample rate (386.75 * 4 = 1547 for NTSC and 397.25 * 4 = 1589 for PAL), and 4 times its horizontal resolution (1344 for NTSC and PAL).
NTSC horizontal resolution: 1344
NTSC horizontal size: 1547
PAL horizontal resolution: 1344
PAL horizontal size: 1589

For N64, this means your capture will have a resolution of 1344x252, (uncropped NTSC) or 1344x300 (uncropped PAL). From here, just use your preferred capture software to downscale the video back to its native, 336x252 for NTSC, and 336x300(?) for PAL. Then you can upscale to 1080p from here (For NTSC that's 1440x1080 4:3 aspect ratio, and for PAL that's 1680x1080 14:9 aspect ratio).

Next, I had to adjust the phase and horizontal position. I found that this changed between capture programs, but not between power cycles of the console.

NTSC:
FFmpeg:
horizontal pos: 190
phase: 31

OBS:
horizontal pos: 185
phase: 0

PAL:
FFmpeg:
horizontal pos: 191
phase: 0 (this is the only difference)

OBS:
horizontal pos: 191
phase: 20

Lastly for the video quality itself, you have to adjust the color. For some reason, the Datapath has incorrect colors when capturing component video. Supposedly, this is a a result of the FPGA not properly supporting YPbPr video. For this reason, you must color correct or else your capture will have a green tint. My rough calibration led me to the following values:
R: 136
G: 122
B: 122

Then there's the issue of frame delivery. Since many older game consoles output slightly above or below 60hz (or 50hz for PAL), this can lead to frame pacing issues in your video capture (i.e. dropped/duplicated frames in order to keep pace with the console) when the framerate of your capture program does not match the original console's refresh rate. This is due to former drifting out of sync with the latter. So you must capture at the exact refresh rate of the original console in order to avoid dropped/duplicated frames as much as possible. In order to find the exact frame interval to capture at, I made a simple FFProbe script to get the EXACT frame interval of my raw video captures. The results are as follows:
NTSC: 27700/463 (~59.827 fps)
PAL: 17722/355 (~49.921 fps)
Since Mario Kart 64 and most N64 games output a video frame (VI) every two refreshes, I halved these intervals in my scaling/cropping scripts. I also stream in OBS with these halved intervals.