[ PrésentationInstallation de codecs et outils audioInstallation d'Ogg Vorbis , installation de FLAC Installation de Lame , installation de a52dec , installation de faad , installation de faac , installation de fdk AAC  , installation de vo-aacenc , installation de Rubber Band ) | Installation de codecs et outils vidéo ( installation de xvid , installation de theora , installation de GPACinstallation de libx264  , installation de x265 , installation de mpeg2decswfdec ) | Installation de bibliothèques, API multimedia et outils divers (OpenCVfrei0r , vid.stab , movit , ffmpeg   )  ]

Les outils de base pour la vidéo

Dernière modification 26 novembre 2023

( ce document est disponible au format pdf dans la rubrique téléchargement)



Présentation

Les outils présentés dans cette page sont nécessaires pour le fonctionnement de la plupart des interfaces graphiques traitant de la vidéo, que ce soit des outils pour l'acquisition, le montage, la conversion et tout simplement la lecture vidéo.

Notez bien que j'ai pris le parti de présenter l'installation de ces outils à partir des sources pour pouvoir m'adapter à toutes les distributions linux (et accessoirement pour avoir un code optimisé et pouvoir choisir éventuellement mes options de compilation). La plupart des distributions proposent déjà ces outils en packages précompilés, libre à vous d'utiliser votre "package manager" préféré (urpmi, apt-get, ...) pour les installer. Cette remarque est valable pour toutes les autres pages traitant de la vidéo.

[Retour haut de la page ]

Installation de codecs et outils audio

Ogg vorbis

Présentation

Ogg Vorbis est un nouveau format de compression audio. Il est comparable à d'autres formats équivalents comme le MP3, VQF ou AAC à la différence qu'il est complètement libre. Il est généralement considéré comme plus performant que MP3. Ogg  est en fait le nom d'un conteneur qui peut contenir aussi bien de l'audio que de la vidéo, alors que vorbis est l'algorithme de compression utilisé pour l'audio inclut dans un conteneur ogg. Notez bien que le conteneur ogg peut contenir de l'audio qui utilise un moyen de compression différent du vorbis (FLAC par exemple).
Le site officiel de Ogg Vorbis est http://www.vorbis.com/  on y récupérera les bibliothèques libogg et libvorbis ainsi que la bibliothèque audio libao. Cette dernière bibliothèque permet de gérer la sortie audio au travers de diverses plateformes logicielles ou matérielles (OSS, ESD, ALSA, AIX, Sun, Net/OpenBSD, IRIX, ...).

Installation

On décompresse la première archive en tapant

tar xvfz libao-1.2.0.tar.gz

Cela donne le répertoire libao-1.2.0. On veillera à ce que les packages lib64x11-devel, lib64alsa2-devel et pulseaudio-devel soient installés, on tape maintenant successivement

./configure
make

Puis en tant que root

make install

Dans le fichier /etc/ld.so.conf on rajoutera les lignes suivantes (si ce n'est déjà fait)

/usr/local/lib
/usr/local/lib/ao/plugins-4

On tape alors

ldconfig

Passons à libogg, on décompresse l'archive en tapant

tar xvfz libogg-1.3.5.tar.gz

Cela donne le répertoire libogg-1.3.5 dans lequel on tape successivement

./configure
make

Puis en tant que root

make install

Passons à libvorbis, on décompresse l'archive en tapant

tar xvf libvorbis-1.3.7.tar.xz

Cela donne le répertoire libvorbis-1.3.7 dans lequel on tape successivement

./configure
make

puis en tant que root

make install
ldconfig


[Retour haut de la page ]

Installation de FLAC

FLAC (Free Lossless Audio Codec) est une algorithme de compression qui est similaire au MP3 à la différence que la compression s'effectue sans perte de qualité. Son site officiel est https://xiph.org/flac/ on y récupérera l'archive qu'on décompresse en tapant:

tar xvf flac-1.4.3.tar.xz

Cela donne le répertoire flac-1.4.3. Dans le répertoire de flac on tape

./configure
make

puis en tant que root

make install

Vérifiez que la ligne /usr/local/lib soit bien dans le fichier /etc/ld.so.conf puis tapez

ldconfig


[Retour haut de la page ]

Installation de LAME

LAME qui signifie Ain't an MP3 Encoder se trouve à l'URL http://sourceforge.net/projects/lame/ . Comme son nom l'indique c'est un encodeur MP3, il est utilisé notamment par les logiciels pour construire des avi (avec une piste audio en mp3).

On décompresse le tarball en tapant :

tar xvfz  lame-3.100.tar.gz

Cela donne le répertoire lame-3.100 dans lequel on tape successivement

./configure
make

Puis en tant que root

make install

[Retour haut de la page ]

Installation de a52dec

La bibliothèque a52 fournit des fonctions pour décoder du flux A/52. Kezako flux A/52 ? C'est le flux audio utilisé par le DVD, il est connu aussi sous le terme AC-3, vous trouverez davantage d'informations dans ce document http://www.atsc.org/standards/a_52a.pdf. Cette bibliothèque est nécessaire pour pouvoir lire les DVD.
L'URL officiel est http://liba52.sourceforge.net/ on y récupère l'archive qu'on décompresse en tapant

tar xvfz a52dec-0.7.4.tar.gz

Cela donne le répertoire a52dec-0.7.4 dans lequel on tape

./configure --with-pic --enable-shared --disable-static

Les options --with-pic --enable-shared --disable-static sont utiles en mode 64bits pour la compilation de ffmpeg et ce n'est pas suffisant, il faut éditer tous les fichiers Makefile et à la place de

CC = gcc

on rajoute

CC = gcc -fPIC

on tape make puis en tant que root

make install
ldconfig



[Retour haut de la page ]

Installation de faad

Faad est un codec audio compatible AAC (Advanced Audio Coding). l'AAC est un format de compression audio comparable à MP3, qui a été développé dans le cadre du standard MPEG2 puis MPEG4, il se pose comme le successeur du MP3 qui a été développé auparavant pour le MPEG2. Les oreilles fines pourront noter qu'un fichier AAC codé à 96kbps a une qualité sonore meilleure qu'un fichier mp3 codé à 128 kbps. L'URL officiel est  https://github.com/knik0/faad2/releases on y récupérera l'archive qu'on décompresse en tapant

tar xvfz faad2-2.10.1.tar.gz


Cela donne le répertoire faad2-2.10.1 dans lequel on tape

./bootstrap
./configure  --with-drm

make

et enfin en tant que root

make install
ldconfig

[Retour haut de la page ]

Installation de faac

La bibliothèque FAAC fournit des encodeurs MPEG-4 and MPEG-2 AAC. Le site officiel est  https://github.com/knik0/faac/ on y récupère l'archive qu'on décompresse en tapant

tar xvfz faac-1_30.tar.gz

cela donne le répertoire faac-1_30 dans lequel on tape

./bootstrap
./configure

make

et enfin en tant que root

make install
ldconfig

installation de FDK AAC

FDK AAC est une bibliothèque qui supporte différents profils du codec audio AAC, il est considéré comme un des meilleurs encodeurs AAC. Le site officiel est https://github.com/mstorsjo/fdk-aac où on récupérera la dernière version qu'on décompressera en tapant

tar xvfz fdk-aac-2.0.2.tar.gz

cela donne le répertoire fdk-aac-2.0.2 dans lequel on tape

./autogen.sh
./configure
make


puis en tant que root

make install


Installation de vo-aacenc

Cette bibliothèque intégre une implémentation du codec audio AAC (Advanced Audio Coding). Le site officiel est http://sourceforge.net/projects/opencore-amr/files/vo-aacenc/ on y récupère l'archive qu'on décompresse en tapant

tar xvfz vo-aacenc-0.1.3.tar.gz

Cela donne le répertoire vo-aacenc-0.1.3 dans lequel on tape

./configure
make

puis en tant que root

make install

[Retour haut de la page ]

Installation de Rubber band

La bibliothèque Rubber band est nécessaire pour certains effets audio qu'on utilise notamment l'effet pitch compensation de kdenlive. Le site officiel est https://breakfastquay.com/rubberband/ on installera d'abord le package  lib64vamp-plugin-sdk-devel et  on décompresse l'archive en tapant :

tar xvfj rubberband-3.3.0.tar.bz2

cela va donner le répertoire rubberband-3.3.0 dans lequel on va taper :

meson build && ninja -C build

et en tant que root

ninja -C build/ install

ldconfig


[Retour haut de la page ]

Installation de codecs vidéo

Installation de xvid

xvid est un codec compatible MPEG4 comme DivX à la différence qu'il est complètement libre. Le site officiel est www.xvid.org, on récupère la dernière archive stable qu'on décompresse en tapant

tar xvfz xvidcore-1.3.7.tar.gz

Cela donne le répertoire xvidcore. On veillera à ce que le package nasm soit installé. Au niveau de xvidcore/build/generic on tape

./configure

Puis

make

Puis en tant que root

make install

j'ai eu cette erreur là

ln: impossible de créer le lien symbolique « /usr/local/lib/libxvidcore.so.4 »: Le fichier existe
Makefile:144: recipe for target 'install' failed

j'ai donc dû supprimer les liens existants

unlink /usr/local/lib/libxvidcore.so.4
unlink /usr/local/lib/libxvidcore.so

et relancer make install, il faut taper ensuite ldconfig

[Retour haut de la page ]


Installation de GPAC

GPAC est une implémentation de la norme MPEG-4 utilisée par d'autres outils de plus haut niveau, le site officiel est https://gpac.wp.imt.fr/ on y récupère l'archive qu'on décompresse en tapant

tar xvfz gpac-2.2.0.tar.gz

cela donne le répertoire gpac-2.2.0 dans lequel on tape

./configure --enable-pic

cela donne

** System Configuration
Install prefix: /usr/local
Source path: /usr/local/linux/multimedia/gpac-2.2.0
C   compiler: gcc
C++ compiler: g++
make: make
CPU: x86_64
Big Endian: no

** GPAC 2.2 rev Core Configuration **
Static Modules: no
debug version: no
GProf enabled: no
Memory tracking enabled: no
Sanitizer enabled: no
Fixed-Point Version: no
IPV6 Support: yes
QuickJS Support: yes (with qjs-libc)

** Detected libraries **
zlib: system (pkgconfig)
OpenGL support: yes
OpenSSL support: system (pkgconfig)
nghttp2: system (pkgconfig)
OSS Audio: yes
ALSA Audio: yes
Jack Audio: yes
Pulse Audio: yes
DirectFB: no
X11: yes (path: /usr/X11R6)
X11 Shared Memory support: yes
X11 XVideo support: yes
SDL: yes
DVB for Linux: yes
FreeType: system (pkgconfig)
JPEG: system (pkgconfig)
OpenJPEG: system (pkgconfig)
PNG: system (pkgconfig)
MAD: system
FAAD: system (pkgconfig)
XVID: system
FFMPEG: system (pkgconfig) - VVC supported
LZMA: yes
Xiph OGG: system (pkgconfig)
Platinum UPnP: no
Xiph Vorbis: system (pkgconfig)
Xiph Theora: system (pkgconfig)
A52 (AC3): system
OpenSVCDecoder: no
OpenHEVCDecoder: no
Freenect: no

Creating config.mak
Check config.log for detection failures
Done - type 'make help' for make info, 'make' to build

on tape ensuite

make

puis make install

j'ai copié ensuite les fichiers suivants

cp -Rf include/gpac/ /usr/local/include
cp bin/gcc/libgpac_static.a /usr/local/lib

dans le fichier /usr/local/include/gpac/configuration.h j'ai mis en commentaire la ligne 207 comme ceci

//#error "Unknown target platform used with static configuration file"

Installation de libx264

libx264 est une bibliothèque permettant d'encoder du flux vidéo dans le format  H.264/MPEG-4 AVC on récupère l'archive par ici http://www.videolan.org/developers/x264.html on la décompresse en tapant

tar xvfj x264-master.tar.bz2

cela donne le répertoire x264-master dans lequel on tape

./configure --enable-pic --enable-shared

il faudra sans doute installer préalablement yasm. A noter que les options --enable-pic --enable-shared  sont utiles pour les configurations 64bits pour compiler ffmpeg.

on revient à libx264 et on peut taper maintenant la commande configure avec les options décrites plus haut et  voilà le résultat

platform:       X86_64
byte order:     little-endian
system:         LINUX
cli:            yes
libx264:        internal
shared:         yes
static:         no
bashcompletion: yes
asm:            yes
interlaced:     yes
avs:            yes
lavf:           yes
ffms:           no
mp4:            gpac
gpl:            yes
thread:         posix
opencl:         yes
filters:        resize crop select_every
lto:            no
debug:          no
gprof:          no
strip:          no
PIC:            yes
bit depth:      all
chroma format:  all

You can run 'make' or 'make fprofiled' now.

puis

make

puis en tant que root


make install
ldconfig

Installation de libx265

HEVC ou High Efficiency Video Coding qu'on appelle également H.265 est le codec qui est censé remplacer à terme H.264. Il est donné pour donner la même qualité mais avec un fichier deux fois plus petit, ou si vous préférez une qualité supérieure avec un fichier de taille identique. Le site officiel est x265.org. Il faut s'enregistrer pour télécharger, ça me plaît pas trop donc j'ai récupéré la dernière archive par https://bitbucket.org/multicoreware/x265_git/downloads/

On y récupérera l'archive qu'on décompressera en tapant:

tar xvfz x265_3.5.tar.gz

cela donne le répertoire x265_3.5 dans lequel on tape

cd build
cmake ../source
make

puis en tant que root

make install
 
[Retour haut de la page ]

Installation de mpeg2dec

mpeg2dec est un décodeur vidéo compatible MPEG2, son site officiel est http://libmpeg2.sf.net dans lequel on récupère l'archive qu'on décompresse en tapant

tar xvfz mpeg2dec-0.4.1.tar.gz

Cela donne le répertoire mpeg2dec-0.4.1 on installe ensuite le package lib64xv-devel puis on tape successivement

./configure --with-pic

l'option with-pic est nécessaire pour la compilation pour les plateformes 64 bits, mais ce n'est pas suffisant il faudra éditer tous les Makefile et au lieu de

CC = gcc

mettre

CC = gcc -fPIC

on tape make puis en tant que root

make install
ldconfig


[Retour haut de la page ]

Installation de bibliothèques, API et outils multimedia

Installation d'OpenCV

OpenCV qui veut dire Open Source Computer Vision library est une bibliothèque qui fournit 500 algorithmes, documentation et divers code d'affichage, elle sert notamment pour le tracking d'éléments dans une vidéo. On installera préalablement les packages python3-numpy-devel, lib64blas-static-devel, lib64gphoto-devel, lib64vtk-devel, lib64ogre-devel, lib64openjpeg-devel, tesseract-devel pour la reconnaissance de caractères. Pour les possesseurs GPU NVIDIA on installera les packages nvidia-cuda-toolkit-devel et nvidia-cuda-toolkit-samples pour le calcul en parallèle des GPU nvidia, pour les GPU intel on installera en revanche  lib64va-devel.

Le site officiel est https://opencv.org on y récupère l'archive officiel, qu'on désarchive en tapant

tar xvfj
opencv-4.8.1.tar.gz

cela donne le répertoire opencv-4.8.1 on récupérera également des extensions qu'on trouvera par là https://github.com/opencv/opencv_contrib, on les décompresse en tapant

tar xvfz opencv_contrib-4.8.1.tar.gz

cela donne le répertoire opencv_contrib-4.8.1. On revient dans le répertoire opencv-4.8.1
dans ce répertoire on tape

mkdir build

cd build

cmake -DWITH_CUDA=OFF -DCMAKE_BUILD_TYPE=Release -DOPENCV_EXTRA_MODULES_PATH=/usr/local/linux/multimedia/opencv_contrib-4.8.1/modules/  -DWITH_OPENGL=ON -DOPENCV_ENABLE_NONFREE=ON -DTesseract_INCLUDE_DIR=/usr/include/tesseract  -DCMAKE_CXX_FLAGS="-lcblas -std=c++11" -DENABLE_CXX11=ON  -DOPENCV_GENERATE_PKGCONFIG=YES -DWITH_QT=ON -DOGRE_DIR=/usr/lib64/OGRE/cmake ..

A noter que l'option -DOPENCV_GENERATE_PKGCONFIG=YES -DCMAKE_CXX_FLAGS="-std=c++11" -DENABLE_CXX11=1 servent pour compiler ffmpeg, on désactivera momentanément les fonctions CUDA, une partie du code n'est plus maintenue (voir par là https://docs.nvidia.com/cuda/video-decoder/index.html ) et ça plante à la compilation. On pourra rajouter les options -DWITH_VA=ON -DWITH_VA_INTEL=OFF pour une GPU intel. Pour le chemin des contribs opencv, il faudra l'adapter bien sûr à votre configuration

Voilà le résultat

-- General configuration for OpenCV 4.8.1 =====================================
--   Version control:               unknown
--
--   Extra modules:
--     Location (extra):            /usr/local/linux/multimedia/opencv_contrib-4.8.1/modules
--     Version control (extra):     unknown
--
--   Platform:
--     Timestamp:                   2023-11-26T09:36:28Z
--     Host:                        Linux 6.4.16-desktop-3.mga9 x86_64
--     CMake:                       3.26.4
--     CMake generator:             Unix Makefiles
--     CMake build tool:            /bin/gmake
--     Configuration:               Release
--
--   CPU/HW features:
--     Baseline:                    SSE SSE2 SSE3
--       requested:                 SSE3
--     Dispatched code generation:  SSE4_1 SSE4_2 FP16 AVX AVX2 AVX512_SKX
--       requested:                 SSE4_1 SSE4_2 AVX FP16 AVX2 AVX512_SKX
--       SSE4_1 (18 files):         + SSSE3 SSE4_1
--       SSE4_2 (2 files):          + SSSE3 SSE4_1 POPCNT SSE4_2
--       FP16 (1 files):            + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 AVX
--       AVX (8 files):             + SSSE3 SSE4_1 POPCNT SSE4_2 AVX
--       AVX2 (37 files):           + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 FMA3 AVX AVX2
--       AVX512_SKX (8 files):      + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 FMA3 AVX AVX2 AVX_512F AVX512_COMMON AVX512_SKX
--
--   C/C++:
--     Built as dynamic libs?:      YES
--     C++ standard:                11
--     C++ Compiler:                /bin/c++  (ver 12.3.0)
--     C++ flags (Release):         -lcblas -std=c++11   -fsigned-char -W -Wall -Wreturn-type -Wnon-virtual-dtor -Waddress -Wsequence-point -Wformat -Wformat-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Wsuggest-override -Wno-delete-non-virtual-dtor -Wno-unnamed-type-template-args -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections  -msse -msse2 -msse3 -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG  -DNDEBUG
--     C++ flags (Debug):           -lcblas -std=c++11   -fsigned-char -W -Wall -Wreturn-type -Wnon-virtual-dtor -Waddress -Wsequence-point -Wformat -Wformat-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Wsuggest-override -Wno-delete-non-virtual-dtor -Wno-unnamed-type-template-args -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections  -msse -msse2 -msse3 -fvisibility=hidden -fvisibility-inlines-hidden -g  -O0 -DDEBUG -D_DEBUG
--     C Compiler:                  /bin/cc
--     C flags (Release):           -fsigned-char -W -Wall -Wreturn-type -Wnon-virtual-dtor -Waddress -Wsequence-point -Wformat -Wformat-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Wsuggest-override -Wno-delete-non-virtual-dtor -Wno-unnamed-type-template-args -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections  -msse -msse2 -msse3 -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG  -DNDEBUG
--     C flags (Debug):             -fsigned-char -W -Wall -Wreturn-type -Wnon-virtual-dtor -Waddress -Wsequence-point -Wformat -Wformat-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Wsuggest-override -Wno-delete-non-virtual-dtor -Wno-unnamed-type-template-args -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections  -msse -msse2 -msse3 -fvisibility=hidden -fvisibility-inlines-hidden -g  -O0 -DDEBUG -D_DEBUG
--     Linker flags (Release):      -Wl,--exclude-libs,libippicv.a -Wl,--exclude-libs,libippiw.a   -Wl,--gc-sections -Wl,--as-needed -Wl,--no-undefined 
--     Linker flags (Debug):        -Wl,--exclude-libs,libippicv.a -Wl,--exclude-libs,libippiw.a   -Wl,--gc-sections -Wl,--as-needed -Wl,--no-undefined 
--     ccache:                      NO
--     Precompiled headers:         NO
--     Extra dependencies:          dl m pthread rt
--     3rdparty dependencies:
--
--   OpenCV modules:
--     To be built:                 alphamat aruco bgsegm bioinspired calib3d ccalib core cvv datasets dnn dnn_objdetect dnn_superres dpm face features2d flann freetype fuzzy gapi hdf hfs highgui img_hash imgcodecs imgproc intensity_transform java line_descriptor mcc ml objdetect optflow phase_unwrapping photo plot python3 quality rapid reg rgbd saliency shape stereo stitching structured_light superres surface_matching text tracking ts video videoio videostab wechat_qrcode xfeatures2d ximgproc xobjdetect xphoto
--     Disabled:                    world
--     Disabled by dependency:      -
--     Unavailable:                 cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev julia matlab ovis python2 sfm viz
--     Applications:                tests perf_tests apps
--     Documentation:               NO
--     Non-free algorithms:         YES
--
--   GUI:                           QT5
--     QT:                          YES (ver 5.15.7 )
--       QT OpenGL support:         YES (Qt5::OpenGL 5.15.7)
--     GTK+:                        YES (ver 3.24.38)
--       GThread :                  YES (ver 2.76.3)
--       GtkGlExt:                  YES (ver 1.2.0)
--     OpenGL support:              YES (/lib64/libOpenGL.so /lib64/libGLX.so /lib64/libGLU.so)
--     VTK support:                 NO
--
--   Media I/O:
--     ZLib:                        /lib64/libz.so (ver 1.2.13)
--     JPEG:                        /lib64/libjpeg.so (ver 80)
--     WEBP:                        /lib64/libwebp.so (ver encoder: 0x020f)
--     PNG:                         /lib64/libpng.so (ver 1.6.38)
--     TIFF:                        /lib64/libtiff.so (ver 42 / 4.5.1)
--     JPEG 2000:                   OpenJPEG (ver 2.5.0)
--     OpenEXR:                     OpenEXR::OpenEXR (ver 3.1.7)
--     HDR:                         YES
--     SUNRASTER:                   YES
--     PXM:                         YES
--     PFM:                         YES
--
--   Video I/O:
--     DC1394:                      YES (2.2.6)
--     FFMPEG:                      YES
--       avcodec:                   YES (60.31.102)
--       avformat:                  YES (60.16.100)
--       avutil:                    YES (58.29.100)
--       swscale:                   YES (7.5.100)
--       avresample:                NO
--     GStreamer:                   YES (1.22.3)
--     v4l/v4l2:                    YES (linux/videodev2.h)
--
--   Parallel framework:            pthreads
--
--   Trace:                         YES (with Intel ITT)
--
--   Other third-party libraries:
--     Intel IPP:                   2021.8 [2021.8.0]
--            at:                   /usr/local/linux/multimedia/opencv-4.8.1/build/3rdparty/ippicv/ippicv_lnx/icv
--     Intel IPP IW:                sources (2021.8.0)
--               at:                /usr/local/linux/multimedia/opencv-4.8.1/build/3rdparty/ippicv/ippicv_lnx/iw
--     VA:                          YES
--     Lapack:                      YES (/lib64/liblapack.so /lib64/libblas.so)
--     Eigen:                       YES (ver 3.4.0)
--     Custom HAL:                  NO
--     Protobuf:                    build (3.19.1)
--     Flatbuffers:                 builtin/3rdparty (23.5.9)
--
--   OpenCL:                        YES (INTELVA)
--     Include path:                /usr/local/linux/multimedia/opencv-4.8.1/3rdparty/include/opencl/1.2
--     Link libraries:              Dynamic load
--
--   Python 3:
--     Interpreter:                 /bin/python3 (ver 3.10.11)
--     Libraries:                   /lib64/libpython3.10.so (ver 3.10.11)
--     numpy:                       /usr/lib64/python3.10/site-packages/numpy/core/include (ver 1.24.3)
--     install path:                lib/python3.10/site-packages/cv2/python-3.10
--
--   Python (for build):            /bin/python2.7
--
--   Java:                         
--     ant:                         /bin/ant (ver 1.10.12)
--     Java:                        NO
--     JNI:                         /usr/lib/jvm/java/include /usr/lib/jvm/java/include/linux /usr/lib/jvm/java/include
--     Java wrappers:               YES (ANT)
--     Java tests:                  YES
--
--   Install to:                    /usr/local
-- -----------------------------------------------------------------
--
-- Configuring done (71.8s)
-- Generating done (1.4s)
-- Build files have been written to: /usr/local/linux/multimedia/opencv-4.8.1/build

Puis sous le répertoire opencv-4.8.1/build on tape

make

je suis tombé sur cette erreur

[ 67%] Linking CXX shared library ../../lib/libopencv_rgbd.so
/bin/ld : CMakeFiles/opencv_rgbd.dir/src/dynafu.cpp.o : dans la fonction « cv::dynafu::DynaFuImpl<cv::Mat>::DynaFuImpl(cv::kinfu::Params const&) » :
dynafu.cpp:(.text._ZN2cv6dynafu10DynaFuImplINS_3MatEEC2ERKNS_5kinfu6ParamsE[_ZN2cv6dynafu10DynaFuImplINS_3MatEEC5ERKNS_5kinfu6ParamsE]+0x39c) : référence indéfinie vers « glGenRenderbuffersEXT »
/bin/ld : dynafu.cpp:(.text._ZN2cv6dynafu10DynaFuImplINS_3MatEEC2ERKNS_5kinfu6ParamsE[_ZN2cv6dynafu10DynaFuImplINS_3MatEEC5ERKNS_5kinfu6ParamsE]+0x3a9) : référence indéfinie vers « glBindRenderbufferEXT »

visiblement c'est un conflit de bibliothèque OpenGL et le fait de mettre la variable OpenGL_GL_PREFERENCE à LEGACY pour forcer l'utilisation de /lib64/libGL.so ne sert à rien. J'ai édité le fichier opencv-4.8.1/build/CMakeVars.txt et il faut changer toutes les occurences de /lib64/libOpenGL.so;/lib64/libGLX.so;/lib64/libGLU.so par /lib64/libGL.so

De même dans le fichier opencv-4.8.1/build/modules/rgbd/CMakeFiles/opencv_rgbd.dir/build.make on remplacera les lignes

lib/libopencv_rgbd.so.4.8.1: /lib64/libOpenGL.so
lib/libopencv_rgbd.so.4.8.1: /lib64/libGLX.so
lib/libopencv_rgbd.so.4.8.1: /lib64/libGLU.so

par

lib/libopencv_rgbd.so.4.8.1: /lib64/libGL.so

et dans le fichier opencv-4.8.1/build/modules/rgbd/CMakeFiles/opencv_rgbd.dir/link.txt on remplace

/lib64/libOpenGL.so /lib64/libGLX.so /lib64/libGLU.so par /lib64/libGL.so

on retape make puis en tant que root make install

ce n'est pas tout pour les effets sous kdenlive j'ai dû créer le lien suivant

ln -s /usr/local/share/opencv4 /usr/share/opencv

Alors en théorie opencv a besoin de ffmpeg pour compiler, je vous conseille donc d'installer d'abord opencv sans ffmpeg, de compiler ffmpeg de recompiler opencv avec ffmpeg et de recommencer ensuite la compilation de frei0r, c'est tordu mais c'est le seul moyen. Il faudra pas hésiter à supprimer le répertoire build pour supprimer le cache.


Installation de frei0r

Maintenant on va récupérer la bibliothèque frei0r qui fournit une API vidéo qui est utile pour les effets vidéo pour les logiciels de montage vidéo, le site officiel est https://frei0r.dyne.org/. On installera préalablement le package lib64gavl-devel. On décompresse la dernière version en tapant

tar xvfz frei0r-2.3.1.tar.gz

cela donne le répertoire frei0r-2.3.1 dans lequel on tape successivement

mkdir build
cd build
cmake ..

on tape ensuite

make

Puis en tant que root

make install

on rajoutera dans le fichier /etc/ld.so.conf la ligne

/usr/local/lib64/frei0r-1

et on tape ldconfig

attention j'ai dû créer le lien suivant pour que mlt retrouve les plugins frei0r

ln -s /usr/local/lib64/frei0r-1 /usr/local/lib/frei0r-1


Installation de vid.stab

vid.stab est un plugin servant à stabiliser les vidéos, il sert notamment à kdenlive, le site officiel est http://public.hronopik.de/vid.stab/ on y récupérera l'archive qu'on décompressera en tapant:

tar xvfz vid.stab-1.1.0.tar.gz

cela donne le répertoire vid.stab-1.1.0 dans lequel on tape

cmake . -DCMAKE_BUILD_TYPE=Release
make

puis en tant que root

make install

Installation de movit

movit est une bibliothèque d'effets vidéos qui va utiliser les ressources des processeurs graphiques (GPU) généralement présent sur la carte graphique, en complément des CPU pour accélérer les applications grâce au calcul parallèle. On récupère les sources sur le site officiel https://movit.sesse.net/ qu'on décompresse en tapant

tar xvfz movit-1.7.1.tar.gz

cela donne le répertoire movit-1.7.1. Pour les joueurs on pourra récupérer la version en développement en tapant

git clone http://git.sesse.net/movit


tout d'abord il faudra installer eigen qui est une bibliothèque mathématique pour l'algèbre linéaire. On installe d'abord les packages fftw3-devel, lib64epoxy-devel, lib64freeglut-devel et lib64sdl2.0-devel. Le site officiel est par ici http://eigen.tuxfamily.org/index.php?title=Main_Page on y récupère eigen 3.4.0 qu'on décompresse en tapant

tar xvfj eigen-3.4.0.tar.bz2

cela donne le répertoire eigen-3.4.0 dans lequel on tape

mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DCUDA_SDK_ROOT_DIR=/usr/share/nvidia-cuda-toolkit/ -DCUDA_TOOLKIT_ROOT_DIR=/usr/share/nvidia-cuda-toolkit/ -DEIGEN_TEST_CUDA=on
make

à noter les options -DCUDA_SDK_ROOT_DIR=/usr/share/nvidia-cuda-toolkit/ -DCUDA_TOOLKIT_ROOT_DIR=/usr/share/nvidia-cuda-toolkit/ -DEIGEN_TEST_CUDA=on sont pour les possesseurs de GPU nvidia, puis en tant que root

make install
cp eigen3.pc /usr/local/lib/pkgconfig

on installera également la biblio de google pour pouvoir faire des tests du code C++, le site officiel est par ici https://code.google.com/p/googletest/ on décompresse l'archive en tapant

tar xvfz googletest-1.14.0.tar.gz

cela donne le répertoire googletest-1.14.0 dans lequel on tape

mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make

puis en tant que root

make install

on revient dans le répertoire movit et on tape

./configure

on édite ensuite le fichier Makefile et on modifie la première ligne (en adaptant le chemin) comme suit

GTEST_DIR ?= /usr/local/linux/multimedia/googletest-1.14.0/googletest

on tape ensuite

make

puis en tant que root

make install

[Retour haut de la page ]

Installation de ffmpeg

Si vous disposez d'une entrée firewire, vous devez d'abord installer les outils de base pour piloter un caméscope miniDV compatible ieee1394, c'est par ici.

ffmpeg est un codec vidéo compatible MPEG-4 son site officiel est http://ffmpeg.org/download.html. On décompresse la dernière archive en tapant

tar xvf ffmpeg-6.1.tar.xz

cela donnera le répertoire ffmpeg-6.1 dans lequel on tape

./configure --enable-shared --enable-gpl --enable-postproc --enable-libmp3lame  --enable-libtheora --enable-libvorbis --enable-libxvid  --enable-libx264 --enable-libx265 --enable-libfdk-aac --enable-nonfree --enable-frei0r  --enable-libpulse --enable-version3 --enable-opengl  --enable-opencl --disable-stripping --enable-libgsm --enable-libvpx --enable-avfilter --enable-chromaprint --enable-librubberband --enable-libvidstab --enable-vdpau --enable-libnpp --enable-cuda-nvcc --nvcc=nvcc --enable-cuvid --enable-ffnvcodec --enable-libopencv --enable-libdc1394 --extra-ldflags="-lm" --extra-cflags="-I/usr/include/cuda -I/usr/local/include/opencv4 -I/usr/local/include/opencv2" --enable-libass --enable-libopencv

On installera préalablement les packages lib64gsm-devel, lib64schroedinger-devel, lib64vpx-devel, lib64vdpau-devel, lib64sdl2.0-devel et lib64opencl-devel

Si OpenCV n'est pas bien reconnu il faudra taper préalablement

export CFLAGS="-I/usr/local/include/opencv4"
export LDFLAGS=-L/usr/local/lib64:
$LDFLAGS
export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig/:$PKG_CONFIG_PATH

et modifier le fichier /usr/local/include/opencv4/opencv2/core/cvdef.h comme ceci

/****************************************************************************************\
*                                    C++ 11                                              *
\****************************************************************************************/
#ifndef CV_CXX11
/*#  if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1800)
#    define CV_CXX11 1
#  endif
#else
#  if CV_CXX11 == 0
#    undef CV_CXX11
#  endif
#endif
#ifndef CV_CXX11
#  error "OpenCV 4.x+ requires enabled C++11 support"*/
#endif

#define CV_CXX_MOVE_SEMANTICS 1
#define CV_CXX_MOVE(x) std::move(x)
#define CV_CXX_STD_ARRAY 1
//#include <array>
#ifndef CV_OVERRIDE
#  define CV_OVERRIDE override
#endif
#ifndef CV_FINAL
#  define CV_FINAL final
#endif

à noter les options --enable-libnpp --enable-cuda-nvcc --enable-cuvid --enable-ffnvcodec pour les possesseurs de GPU nvidia qui risquent de générer l'erreur suivante

ERROR: cuda requested, but not all dependencies are satisfied: ffnvcodec

on va récupérer la dépendance manquante en tapant

git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git

dans le répertoire nv-codec-headers/ on tape make puis en tant que root make install

on retape configure avec toutes ses options on retape make puis en tant que root make install
ldconfig

Vous remplacez le chemin en absolu de ffmpeg avec celui de votre configuration. On obtient la liste des formats supportés par ffmpeg en tapant

ffmpeg -formats

Pour voir si les accélérations matérielles sont bien en place si vous avez une NVIDIA, vous avez la liste des encoders en tapant

ffmpeg -hide_banner -encoders  | grep nvenc

voilà le résultat

 V....D av1_nvenc            NVIDIA NVENC av1 encoder (codec av1)
 V....D h264_nvenc           NVIDIA NVENC H.264 encoder (codec h264)
 V....D hevc_nvenc           NVIDIA NVENC hevc encoder (codec hevc)

et

ffmpeg -hide_banner -decoders | grep cuvid

donnera

 V..... av1_cuvid            Nvidia CUVID AV1 decoder (codec av1)
 V..... h264_cuvid           Nvidia CUVID H264 decoder (codec h264)
 V..... hevc_cuvid           Nvidia CUVID HEVC decoder (codec hevc)
 V..... mjpeg_cuvid          Nvidia CUVID MJPEG decoder (codec mjpeg)
 V..... mpeg1_cuvid          Nvidia CUVID MPEG1VIDEO decoder (codec mpeg1video)
 V..... mpeg2_cuvid          Nvidia CUVID MPEG2VIDEO decoder (codec mpeg2video)
 V..... mpeg4_cuvid          Nvidia CUVID MPEG4 decoder (codec mpeg4)
 V..... vc1_cuvid            Nvidia CUVID VC1 decoder (codec vc1)
 V..... vp8_cuvid            Nvidia CUVID VP8 decoder (codec vp8)
 V..... vp9_cuvid            Nvidia CUVID VP9 decoder (codec vp9)

la liste des méthodes d'accélération matérielle est obtenue en tapant

fmpeg -hide_banner -hwaccels

voilà le résultat

Hardware acceleration methods:
vdpau
cuda
vaapi
opencl


[Retour page d'accueil FUNIX]
[Retour haut de la page ]