Camera Hardware, CPU -> VCHI -> GPU, shared RAM, MMAL
raspistill
, capturing still photographs with the camera moduleraspivid
, capturing video with the camera module
- Camera Serial Interface (CSI)
- Broadcom 2835 camera driver (bcm2835-v4l2)
- VideoCore (VC)
- VideoCore Host Interface Queue (vchiq) driver => What is /dev/vchiq in Raspberry Pi?
- Multi-Media Abstraction Layer (MMAL)
API / Programmierschnittstelle
Wikipedia
Video4Linux (V4L) => V4L2 für Version 2
Video for Windows (VfW) (alt) => Windows 3.1 (1992)
Windows Driver Model (WDM) (alt)
Windows Driver Frameworks (WDF, formerly Windows Driver Foundation) (ab Windows 2000 bis Windows 10)
DirectShow (war Teil von DirectX, ist nun Bestandteil der Windows-Plattform)
linuxtv.org (official)
Development: Video4Linux APIs => Video4Linux2 V4L2
Tutorials
How to use V4L2 Cameras on the Raspberry Pi 3 with an Upstream Kernel
Definition of “downstream” and “upstream”
- Staging
- Mainline
- Upstream
- Downstream
Linux media interface Linux video capture interface
$ sudo apt-get install fswebcam [...] The following NEW packages will be installed: fontconfig-config fonts-dejavu-core fswebcam libfontconfig1 libgd3 libjbig0 libtiff5 libwebp6 libxpm4 [...] $ fswebcam [<options>] <filename> $ fswebcam -r 640x480 # Auflösung festlegen -d /dev/video0 # Welches Device wird benutzt -v # Verbose -> Ausführliche Ausgabe /tmp/test.jpg # Ausgabe-Datei
$ sudo apt-get install motion [...] The following NEW packages will be installed: ffmpeg libaacs0 libass5 libasyncns0 libavc1394-0 libavcodec57 libavdevice57 libavfilter6 libavformat57 libavresample3 libavutil55 libbdplus0 libbluray1 libbs2b0 libcaca0 libcairo2 libcdio-cdda1 libcdio-paranoia1 libcdio13 libchromaprint1 libdc1394-22 libdrm-amdgpu1 libdrm-freedreno1 libdrm-nouveau2 libdrm-radeon1 libebur128-1 libegl1-mesa libfftw3-double3 libflac8 libflite1 libfribidi0 libgbm1 libgl1-mesa-dri libgl1-mesa-glx libglapi-mesa libgme0 libgraphite2-3 libgsm1 libharfbuzz0b libice6 libiec61883-0 libjack-jackd2-0 libllvm3.9 libmariadbclient18 libmp3lame0 libmpg123-0 libogg0 libopenal-data libopenal1 libopencv-core2.4v5 libopencv-imgproc2.4v5 libopenjp2-7 libopenmpt0 libopus0 libpgm-5.2-0 libpixman-1-0 libpostproc54 libpq5 libpulse0 libraw1394-11 librubberband2 libsdl2-2.0-0 libsensors4 libshine3 libsm6 libsnappy1v5 libsndfile1 libsndio6.1 libsodium18 libsoxr0 libspeex1 libssh-gcrypt-4 libswresample2 libswscale4 libtheora0 libtwolame0 libtxc-dxtn-s2tc libva-drm1 libva-x11-1 libva1 libvdpau-va-gl1 libvdpau1 libvorbis0a libvorbisenc2 libvorbisfile3 libvpx4 libwavpack1 libwayland-client0 libwayland-cursor0 libwayland-egl1-mesa libwayland-server0 libwebpmux2 libx11-xcb1 libx264-148 libx265-95 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-sync1 libxcb-xfixes0 libxcursor1 libxdamage1 libxfixes3 libxi6 libxinerama1 libxkbcommon0 libxrandr2 libxrender1 libxshmfence1 libxss1 libxtst6 libxv1 libxvidcore4 libxxf86vm1 libzmq5 libzvbi-common libzvbi0 mesa-va-drivers mesa-vdpau-drivers motion mysql-common va-driver-all vdpau-driver-all x11-common [...] Setting up motion (4.0-1) ... Adding group `motion' (GID 113) ... Done. Warning: The home dir /var/lib/motion you specified already exists. Adding system user `motion' (UID 109) ... Adding new user `motion' (UID 109) with group `motion' ... The home directory `/var/lib/motion' already exists. Not copying from `/etc/skel'. adduser: Warning: The home directory `/var/lib/motion' does not belong to the user you are currently creating. Adding user `motion' to group `video' ... Adding user motion to group video Done. $ sudo vi /etc/default/motion start_motion_daemon=no => yes $ sudo mkdir /srv/motion $ sudo chown motion:motion /srv/motion