Capturing Composite Video and How YouTube Deals With Them
I think composite video signal is not as bad as people make it out to be. With correct configuration, it looks lovely even on LCD displays, it has it's own charm. I think two of the main reasons why its perceived as bad is because the modern TVs that can take in composite signal upscale it horribly and apply some sort of filter like hq2x or similar, making it look like vaseline smeared window, and because of YouTube dropping the bitrate of 480p video to abysmal levels and chopping framerates.
Lately I was playing my PS2 through composite attached to my LCD TV, thinking the video could look a lot better.
Then I found a USB device with composite dongles hanging from it. Turns out, my dad bought a capture card years
ago. It is an AverMedia C039. Thinking I can use it to get better video from composite, I tried it out on my computer,
but no matter what I did, I wasn't getting a satisfying image. FFmpeg piped to FFplay had delay issues, MPV wasn't any better,
VLC and Media Player Classic kept freezing... After a while, I discovered AmaRecTV and tried to use it as a last resort.
To my surprise, even with no configuration, the video looked miles better. There was also no noticable delay and audio was in sync
with the video. For comparison:
- Output from Media Player Classic
- Output from AmaRecTV
I know it is not a fair comparison as the video from AmaRecTV is actually upscaled to 720p, but more on that later. Apart from the blockier and choppier video on the MPC output, the colors are also washed out. So, I decided I would use AmaRecTV.
Now, when I first tried to upload my capture from MPC to the youtube in 480p, I immediately noticed the quality was a lot worse than the original video. This is due to the fact that YouTube drops the bitrate on 480p way too much. The framerate also wasn't fluid at all. You can see the comparison in the below picture. To mitigate this issue, I had to upscale the video to 720p, for that I just used bicubic scaling, nothing special.
After thinking I was done with it, I captured another footage, but this time upscaling it to 720p. When I was done, I uploaded it to YouTube and noticed something different. The colors were way darker. This is apparently due to the way YouTube handles colorspace in either MP4 container or H264 codec, I'm not sure which. The original video was in BT709 full range (0-255) colorspace but YouTube cropped(?) the colorspace to limited range (16-255), trashing the darker levels. You can see the comparison between the YouTube video and the original video in the below picture.
So now, I display the capture on AmaRecTV using the options:
- w=720, h=480, fps=29.97, fcc=YUY2, bit=16
- 4:3 AR, Top Field First, Role-playing Deinterlacing, Scan Line Doubler disabled
- t=20, b=18, l=0, r=0 cropping, underscan
And record the window of AmaRecTV on OBS with these options:
- Base Resolution: 640x480
- Output Resolution: 960x720
- Downscale Filter: Bicubic
Output / Recording:
- Type: Custom Output (FFmpeg)
- Container Format: MP4 // You might want to use MKV, up for preference
- Video Bitrate: 5000 Kbps
- Video Encoder: nvenc_h264 // For Nvidia cards, use libx264 if you don't have one.
- Audio Bitrate: 320 Kbps // You might want to increate the bitrate
- Audio Encoder: libopus // You might want to use ALAC for lossless
- Color Space: 601
- Color Range: Partial
The reason for OBS is because the recording ability of AmaRecTV is not suited for my use-case. It is more for recording the video uncompressed. I have tried it using x264 codec but it simply didn't fit my needs. Also, as the resolution of the device is 720x480, there are black borders on the sides of the 640x480 content, so I need to crop those black bars and OBS does that for me in real-time. AmaRecTV also can create a virtual device for capturing in OBS but apparently it only works on 32-bit OBS, and mine is 64-bit. So I just capture the window.
I recently started recording a playthrough of Champions of Norrath in my YouTube channel, so you can check it out to see my
recording method in action:
[PS2] Champions of Norrath Playthrough