The following guide is specifically targeted to capture analog video signals.
Checklist:




Luma and Chroma are transported on distinct wire pairs.
Recommended over Composite if your A/V equipment has no better signal to offer, especially if Digital→Analog conversion is performed onboard (e.g. LaserDisc player with digital framebuffer, D-VHS w/o Components, etc).
It's also recommended
Best solution if you don't have access to Components video, when it comes to signal accuracy.
Capture hardware is scarce and expensive.
The only way to get analog progressive scan content. The other peculiarity is you can transport HDTV content with it (up to 1080i/p).
Capture cards I've found:
Alternatively, you can use a components to HDMI converter, then a digital acquisition card to process those signals.
Best way to deal with it is getting through a MUSE decoder, then capturing the components.
| Input | Works? |
|---|---|
| Composite | Yes, OOB, (input=0) |
| S-Video | Yes, black and white only on Linux (input=1) |
| Audio | Yes, OOB |
Remarks:
VIDIOC_S_PARM ioctl natively supported.Sourcing: Aliexpress product page
If you have issues with this card (dmesg yelling that it's a model with the generic USB PVID), you need either to reload the kernel module with modprobe em28xx card=64, or adding options em28xx card64 to /etc/modprobe.d/easycap-em28xx.conf, but this will screw with other capture cards using the eMPIA em28xx controllers.
| Input | Works? |
|---|---|
| S-Video | Yes, OOB, in color (input=0) |
| Composite | Yes, OOB, (input=1) |
| Audio | Muted by default, need to be unmuted with v4lctl |
Remarks:
ioctl(VIDIOC_S_PARM): Inappropriate ioctl for device em28xx.You can do this in realtime using the following commands:
Display NTSC:
ffmpeg -f v4l2 -standard NTSC -video_size ntsc -framerate ntsc -i /dev/video2 -f alsa -i hw:1,0 -vcodec ayuv -acodec copy -map 0:0 -map 1:0 -f avi pipe:1 | ffplay -
Display PAL:
ffmpeg -f v4l2 -standard PAL -video_size pal -framerate pal -i /dev/video2 -f alsa -i hw:1,0 -vcodec ayuv -acodec copy -map 0:0 -map 1:0 -f avi pipe:1 | ffplay -
If your card doesn't support VIDIOC_S_PARM ioctls:
ffmpeg -f v4l2 -i /dev/video2 -f alsa -i hw:1,0 -vcodec ayuv -acodec copy -map 0:0 -map 1:0 -f avi pipe:1 | ffplay -
Unless you have a decent machine, it is recommended to first save an uncompressed capture that you will process in a second time, then compress (either losslessly for mastering/archival, or lossily for final consumption).
This can be performed using a ffmetadata file. Add the following options to insert an external metadata file:
-i example.ini -map_metadata 1
File example:
;FFMETADATA1 title=bike\\shed ;this is a comment artist=FFmpeg troll team [CHAPTER] TIMEBASE=1/1000 START=0 #chapter ends at 0:01:00 END=60000 title=chapter \#1 [STREAM] title=multi\ line
Doc for more info: https://ffmpeg.org/ffmpeg-formats.html#Metadata-1
ffmpeg -i master.avi -c:v libx264 -preset slow -crf 18 -c:a opus -b:a 192 output.mkv
ffmpeg -i master.avi -c:v libx265 -preset slow -crf 24 -c:a opus -b:a 192 output.mkv
Additionally, you should tune the encoder by inserting -tune <option> depending on the kind of content you're encoding:
| Option | Target |
|---|---|
| film | use for high quality movie content; lowers deblocking |
| animation | good for anime and cartoons; uses higher deblocking and more reference frames |
| grain | preserves the grain structure in old, grainy film material |
| stillimage | good for slideshow-like content |
If you wish to have a smaller file, you can tune the CRF up to 28 for x264, and for x265.