NES Video Capture Recommendation

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
NES Video Capture Recommendation
by on (#158909)
I am interested in capturing the native composite video from my NES. Obviously I would like to get something as close to the image as I see on my CRT, or at least can do some reasonable justice to the NES video signal. I know most capture devices have problems with the 240p mode and usually capture two interlaced frames. A friend of mine said he used script for avisynth to separate the interlaced frames to eliminate the combing artifacts and provide ~60 true frames. Then he upscaled the video to 1080p/60 so it would display properly for Youtube, but that was for a captures of IBM PC CGA composite video with artifact colors. I would like a solution that minimizes artifacting as the NES's video intended.

The HD Retrovision page suggests that the Elgato Game Capture HD an an Avermedia device can handle the composite 240p signal correctly, but not component. Fortunately I do not need component 240p just yet.
Re: NES Video Capture Recommendation
by on (#158911)
Great Hierophant wrote:
I know most capture devices have problems with the 240p mode and usually capture two interlaced frames.

From my experience with cheap video capture devices (which is all I have ever been able to afford), you don't even get interlaced video if you use the bundled software, which often just drops entire fields. Fortunately, there are programs you can download that will capture interlaced video.

Quote:
A friend of mine said he used script for avisynth to separate the interlaced frames to eliminate the combing artifacts and provide ~60 true frames.

Yes, this is possible. You might also need to adjust the frame rate and/or audio duration, since the NES deviates from the standard NTSC frame rate slightly.

Another option is to use a DVD recorder, so you don't have to worry about the capture process, and then you rip the DVD and do the post processing (deinterlacing, scaling, etc.) on the PC. James Rolfe, the AVGN, does this. The main disadvantage with this approach is that you start out with MPEG2 compressed video as your master recording, but that might not be so bad at high quality settings.
Re: NES Video Capture Recommendation
by on (#158912)
I don't have anything to recommend, but you might be able to get pretty decent quality even from cheap devices if you're willing to do some post-processing. I have cheap USB capture stick and I think the capture quality from it is fairly good (although I don't have a video of it to show, maybe I'll make one later). It does do the bogus deinterlacing for 240p signals though, so it does need some AviSynth post-processing for NES video.

VirtualDub is a good tool for capturing.
Re: NES Video Capture Recommendation
by on (#158913)
Composite video looks quite shitty no matter how you capture it, so I think it's a waste to get expensive capture devices. The important thing is to make sure that no frames/fields are being dropped during the capture, so you can post-process the video and make it look more authentic.
Re: NES Video Capture Recommendation
by on (#158915)
I have a cheap Diamond VC500 (~$40) that I've used for NES a bunch of times. NES has such a low quality of output, I don't think it would make much difference to buy an expensive capture device.

I've attached an image of what my cheap thing looked like after de-interlacing (click on the picture, the resized version seems to corrupt).

My only problem with it is the audio speed seems to drift up and down slightly over time, not sure if this is because of NES' nonstandard framerate or what, but I tend to just record the audio separately; it still syncs with the video that way but I don't get the pitch drift. Not sure if this is a common problem with the VC500 or just mine.
Re: NES Video Capture Recommendation
by on (#158919)
That's about the same quality I get from my cheap PCI capture card.
Re: NES Video Capture Recommendation
by on (#158935)
My friend uses VirtualDub for his capturing software. I had previously thought that VirtualDub was solely an editor, but now I am corrected. He also used a $40 device, a Dazzle DVC100.
Re: NES Video Capture Recommendation
by on (#158937)
I tend to use avisynth to edit/process video, and virtualdub to host my avisynth scripts so I can preview them and count frames, etc. Then when the script is finished, I use virtualdub for the final encode and export.

VirtualDub itself is not a very good editor, but it's pretty usable by itself for simple changes, e.g. deinterlace, resize, etc.

It also does have a video capture feature, yes. Not too much special about this, but it has better customizability of encoding than most capture software I've seen. A capture device will probably come with its own minimally-functional capture software that you can use too.
Re: NES Video Capture Recommendation
by on (#158939)
rainwarrior wrote:
A capture device will probably come with its own minimally-functional capture software that you can use too.

The one that came with mine applied non-optional deinterlacing that consisted in dropping every other field. This is already pretty bad when applied to regular NTSC video, but it's even worse on video game footage. I had access to at least one other card and its bundled capture software that did the same thing. I guess you should test whatever comes with your device though, there's always the chance it'll do a decent enough job.
Re: NES Video Capture Recommendation
by on (#159654)
Okay, I had another question: Is it possible to de-interlace in close enough to real time to be suitable for streaming?

I see it as a two step process for your average capture device. First, you deinterlace the video so that instead of having 480i, you have 240p. Second, you upscale 240p to 720p so that Youtube or Twitch will output 60p. As an optional third step, you combine the video from the game with feed from a camera pointed at the player.

How feasible is this to do in anything close to real time?
Re: NES Video Capture Recommendation
by on (#159656)
Great Hierophant wrote:
Second, you upscale 240p to 720p so that Youtube or Twitch will output 60p.

Lack of high motion support in LDTV (240p) or EDTV (480p) resolution from the major services disappoints me.
Re: NES Video Capture Recommendation
by on (#159657)
Yes, you can de-interlace in real time; simple de-interlacing is less CPU intensive than most video filters. The question of whether you can do what you want in real time is really about how much processing power you have available, and what kind of load you're putting on it. You probably have enough power to do what you want.

One thing you should note, though, is that de-interlacing usually means doubling the framerate, i.e. 480i 30fps becomes 240p 60fps. Most streams I've seen only run at 30fps, and what you tend to get is every second frame dropped (which causes invisible characters if they do a 50% flicker, e.g. mega man taking damage). 60fps also doubles your CPU processing load, since you've got twice as much data to process.

Alternative to de-interlace: do a linear resize from 480 to 240 pixels in height, which blends the two interlaced frames, but retains 30fps. Upscale from there.
Re: NES Video Capture Recommendation
by on (#159658)
rainwarrior wrote:
One thing you should note, though, is that de-interlacing usually means doubling the framerate, i.e. 480i 30fps becomes 240p 60fps. Most streams I've seen only run at 30fps, and what you tend to get is every second frame dropped (which causes invisible characters if they do a 50% flicker, e.g. mega man taking damage). 60fps also doubles your CPU processing load, since you've got twice as much data to process.

Which is why it surprises me that the streaming services allow high motion only for 720p or larger sources.

Quote:
Alternative to de-interlace: do a linear resize from 480 to 240 pixels in height, which blends the two interlaced frames, but retains 30fps. Upscale from there.

That's what I've typically done. But you have to make sure that your capture tool correctly aligns the two fields rather than offsetting them by one line, or your recording will be a blurfest. I've had to introduce a compensating offset when processing NES recordings made with my Philips DVDR3505.
Re: NES Video Capture Recommendation
by on (#159659)
The 60fps modes really aren't oriented toward LD content at all. (I'm not surprised in the least that they don't target this, though.)

Even if the service offers 720/60, generally it will fall back to 720/30 for people watching whenever they can't meet the bandwidth requirement, and in every case I've seen it does it by dropping every second frame (i.e. the invisible mega man problem again). In an even worse case where they have the bandwidth, but can't meet the CPU/GPU requirement, the framerate gets hella choppy whenever 60fps is engaged (this happened to me when Firefox blacklisted my GPU).

Dropping odd frames is normally not a problem for modern games, as they expect variable framerates and almost never use flicker transparency, but for NES games it might be worth your while to just target 30fps for your stream.

tepples wrote:
You have to make sure that your capture tool correctly aligns the two fields rather than offsetting them by one line, or your recording will be a blurfest. I've had to introduce a compensating offset when processing NES recordings made with my Philips DVDR3505.

LOL, that's gross. I've never seen that happen before, but there's an infinite number of ways somebody can screw it up, I suppose.
Re: NES Video Capture Recommendation
by on (#159677)
I recently did some capture tests, and I have to say that the capture quality from my el cheapo capture card was worse than I remembered. Notably, there were severe ringing artifacts around transitions. This is a cropped shot (2x nearest-neighbor upscaled) from Gremlins 2 on NTSC NES:
Attachment:
gremlins-ringing.png
gremlins-ringing.png [ 52.92 KiB | Viewed 3558 times ]

I'm open for ideas if somebody knows good ways to diminish the effect in AviSynth post-processing. (My first quick hack was to apply a simple horizontal blur, which did work somewhat OK, but probably better ways exist.)

I'll probably post some post-processed videos later, since I took the time to set this thing up.

I also did some experimenting with live processing, and I was able to apply the AviSynth stuff live by creating a DirectShow .grf ("graph") file for the capture card's connections, and then open that in AviSynth with directshowsource(). I couldn't find a way to stream AviSynth's output directly to something like OBS, so I had to resort to doing a window capture from MPC-HC.