User Tools

Site Tools


docs:vidcap

This is an old revision of the document!


Video capture on Linux

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

Checklist:

  • Capturing Video+Audio FIXME
  • Capturing Subtitle with VBI TODO
  • Authoring subtitles TODO
  • Authoring chapters TODO
  • Lossless content encoding TODO
  • Lossy content encoding FIXME

Video path types

Composite

TODO

Y/C - S-Video

FIXME

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).

Luma and Chroma are transported with separate wire pairs with this connector.

It's also recommended if your capture card has a poor comb filter (your mileage may vary, make an A/B test with your specific setup). Typical artefacts of a poor comb filter is a blurry luma, and a smudged chroma, especially if you have an OSD.

RGBHV

TODO

Component - YPbPr

TODO

The only way to get analog progressive scan content. The other peculiarity is you can transport HDTV content with it (up to 1080i/p).

MUSE - Hi-Vision

Best way to deal with it is getting through a MUSE decoder, then capturing the components.

Capture cards

Easy Cap DC60

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:

  • All settings need to be preset with v4lctl, setting format and framerate with ffmpeg will fail with the following error: ioctl(VIDIOC_S_PARM): Inappropriate ioctl for device em28xx.
  • Signal integrity is satisfactory, no specific remarks to add.

Monitoring video signal

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 -

Capturing video signal

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).

Authoring chapters

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:

example.ini
;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

Lossy content encoding

  • Transparent, x264
ffmpeg -i master.avi -c:v libx264 -preset slow -crf 18 -c:a opus -b:a 192 output.mkv
  • Transparent, x265
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 FIXME for x265.

docs/vidcap.1652791083.txt.gz · Last modified: 2022/05/17 14:38 by root

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki