[ 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 sox , 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 14 mai 2021

( 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 inclu 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.4.tar.gz

Cela donne le répertoire libogg-1.3.4 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 http://flac.sourceforge.net/ on y récupérera l'archive qu'on décompresse en tapant:

tar xvf flac-1.3.3.tar.xz

Cela donne le répertoire flac-1.3.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_0.tar.gz


Cela donne le répertoire faad2-2_10_0 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 sox

On installera également sox qui sert à convertir différents format audio, le site officiel est http://sox.sourceforge.net/ on y récupère l'archive qu'on décompresse en tapant

tar xvfz sox-14.4.2.tar.gz

cela donne le répertoire sox-14.4.2 préalablement on installera les packages suivants  lib64id3tag-devel, lib64png-devel et lib64ltdl-devel on revient au répertoire de sox dans lequel on tape successivement

./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-1.9.1.tar.bz2

cela va donner le répertoire rubberband-1.9.1 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-1.0.1.tar.gz

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

./configure --enable-pic --use-openjpeg=no

cela donne

** GPAC 1.0.1 rev Core Configuration **
debug version: no
GProf enabled: no
Static build enabled: no
Memory tracking enabled: no
Sanitizer enabled: no
Fixed-Point Version: no
IPV6 Support: yes
Static Modules: no
QuickJS Support: yes

** Detected libraries **
zlib: system
OSS Audio: yes
ALSA Audio: no
Jack Audio: yes
PulseAudio Audio: yes
DirectFB support: no
X11 Shared Memory support: yes (path: /usr/X11R6)
X11 XVideo support: yes
SDL Support: no
OpenGL support: yes
TinyGL support: no
OpenSSL support: yes
DVB Support: yes

** Extra Libraries used **
FreeType: system
JPEG: system
OpenJPEG: no
PNG: system
MAD: system
FAAD: system
XVID: system
FFMPEG: system
LZMA: yes
Xiph OGG: system
Platinum UPnP: no
AVCap: no
Xiph Vorbis: system
Xiph Theora: system
A52 (AC3): system
OpenSVCDecoder: no
OpenHEVCDecoder: no
Freenect: no

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 192 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 --extra-ldflags="-L/usr/local/linux/multimedia/gpac-1.0.1/bin/gcc -L/usr/lib64 -lpng -ljpeg -lssl -lcrypto -llzma -ltheora -lvorbis -lxvidcore -lGLEW -lGL -la52 -lfaad -lmad -lavfilter -lGLU -lavdevice"

à noter la dernière option qui permet d'éviter le message suivant, on mettra bien sûr le chemin de GPAC adapté à votre configuration,

Warning: gpac is too old, update to 2007-06-21 UTC or later

et la non prise en compte de GPAC

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:            avxsynth
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

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 plait pas trop donc j'ai récupéré la dernière archive par .

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

tar xvfz x265_3.4.tar.gz

cela donne le répertoire x265_3.4 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 ]
[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, lib64gphoto-devel, lib64vtk-devel, lib64ogre-devel, lib64openjpeg-devel, tesseract-devel pour la reconnaissance de caractères et python-numpy-devel. 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/releases.html on y récupère l'archive officiel, qu'on désarchive en tapant

unzip opencv-4.5.2.zip

cela donne le répertoire opencv-4.5.2 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.5.2.tar.gz

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

mkdir build

cd build

cmake -DCMAKE_BUILD_TYPE=Release -DOPENCV_EXTRA_MODULES_PATH=/usr/local/linux/multimedia/opencv_contrib-4.5.2/modules/  -DWITH_OPENGL=ON -DOPENCV_ENABLE_NONFREE=ON -DTesseract_INCLUDE_DIR=/usr/include/tesseract  -DCMAKE_CXX_FLAGS="-std=c++11" -DENABLE_CXX11=ON -DOPENCV_GENERATE_PKGCONFIG=YES -DWITH_QT=ON -DWITH_VTK=OFF -DBUILD_JAVA=OFF -DWITH_LAPACK=OFF -DBUILD_IPP_IW=OFF -DWITH_OPENJPEG=OFF -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. J'ai désactivé l'utilisation d'OpenJpeg suite à des problèmes de compilation. Pour le chemin des contribs opencv, il faudra l'adapter bien sûr à votre configuration

Voilà le résultat

-- General configuration for OpenCV 4.5.2 =====================================
--   Version control:               unknown
--
--   Extra modules:
--     Location (extra):            /usr/local/linux/multimedia/opencv_contrib-4.5.2/modules
--     Version control (extra):     unknown
--
--   Platform:
--     Timestamp:                   2021-05-14T13:31:06Z
--     Host:                        Linux 5.10.33-desktop-1.mga8 x86_64
--     CMake:                       3.19.2
--     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 (17 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 (5 files):             + SSSE3 SSE4_1 POPCNT SSE4_2 AVX
--       AVX2 (31 files):           + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 FMA3 AVX AVX2
--       AVX512_SKX (7 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 10.3.0)
--     C++ flags (Release):         -std=c++11   -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-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):           -std=c++11   -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-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 -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-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 -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-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 
--     Linker flags (Debug):        -Wl,--exclude-libs,libippicv.a -Wl,--exclude-libs,libippiw.a   -Wl,--gc-sections -Wl,--as-needed 
--     ccache:                      NO
--     Precompiled headers:         NO
--     Extra dependencies:          dl m pthread rt /lib64/libGL.so /lib64/libGLU.so
--     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 line_descriptor mcc ml objdetect optflow ovis 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:                 cnn_3dobj cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev java julia matlab python2 sfm viz
--     Applications:                tests perf_tests apps
--     Documentation:               NO
--     Non-free algorithms:         YES
--
--   GUI:
--     QT:                          YES (ver 5.15.2)
--       QT OpenGL support:         YES (Qt5::OpenGL 5.15.2)
--     GTK+:                        NO
--     OpenGL support:              YES (/lib64/libGL.so /lib64/libGLU.so)
--
--   Media I/O:
--     ZLib:                        /lib64/libz.so (ver 1.2.11)
--     JPEG:                        /lib64/libjpeg.so (ver 80)
--     WEBP:                        /lib64/libwebp.so (ver encoder: 0x020f)
--     PNG:                         /lib64/libpng.so (ver 1.6.37)
--     TIFF:                        /lib64/libtiff.so (ver 42 / 4.2.0)
--     JPEG 2000:                   /lib64/libjasper.so (ver )
--     OpenEXR:                     /usr/lib64/libImath-2_5.so /usr/lib64/libIlmImf-2_5.so /usr/lib64/libIex-2_5.so /usr/lib64/libHalf-2_5.so /usr/lib64/libIlmThread-2_5.so (ver 2_5)
--     HDR:                         YES
--     SUNRASTER:                   YES
--     PXM:                         YES
--     PFM:                         YES
--
--   Video I/O:
--     DC1394:                      YES (2.2.6)
--     FFMPEG:                      NO
--       avcodec:                   YES (58.134.100)
--       avformat:                  YES (58.76.100)
--       avutil:                    YES (56.70.100)
--       swscale:                   YES (5.9.100)
--       avresample:                YES (4.0.0)
--     GStreamer:                   YES (1.18.3)
--     v4l/v4l2:                    YES (linux/videodev2.h)
--
--   Parallel framework:            pthreads
--
--   Trace:                         YES (with Intel ITT)
--
--   Other third-party libraries:
--     Intel IPP:                   2020.0.0 Gold [2020.0.0]
--            at:                   /usr/local/linux/multimedia/opencv-4.5.2/build/3rdparty/ippicv/ippicv_lnx/icv
--     Intel IPP IW:                NO
--     VA:                          YES
--     Eigen:                       YES (ver 3.3.9)
--     Custom HAL:                  NO
--     Protobuf:                    build (3.5.1)
--
--   OpenCL:                        YES (INTELVA)
--     Include path:                /usr/local/linux/multimedia/opencv-4.5.2/3rdparty/include/opencl/1.2
--     Link libraries:              Dynamic load
--
--   Python 3:
--     Interpreter:                 /bin/python3 (ver 3.8.9)
--     Libraries:                   /lib64/libpython3.8.so (ver 3.8.9)
--     numpy:                       /usr/lib64/python3.8/site-packages/numpy/core/include (ver 1.19.4)
--     install path:                lib/python3.8/site-packages/cv2/python-3.8
--
--   Python (for build):            /bin/python2.7
--
--   Install to:                    /usr/local
-- -----------------------------------------------------------------
--
-- Configuring done
-- Generating done
-- Build files have been written to: /usr/local/linux/multimedia/opencv-4.5.2/build

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

make puis en tant que root make install

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/. La dernière release 1.7.0 n'est plus compatible avec la dernière version d'OpenCV, il faudra récupérer la version en développement par ici https://github.com/dyne/frei0r on la décompresse en tapant

unzip frei0r-master.zip

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

./configure

cela donne

Compile frei0r-plugins 1.6.1 for x86_64-pc-linux-gnu

    - INSTALL prefix: /usr/local
    - CPU optimization: YES
    - opencv: YES
              data dir: /usr/local/share/opencv
    - gavl: YES
    - cairo: YES

le numéro de version interpelle, mais c'est bien la dernière version en développement, on tape ensuite

make

Puis en tant que root

make install

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.6.3.tar.gz

cela donne le répertoire movit-1.6.3. 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.3.9 qu'on décompresse en tapant

tar xvfj eigen-3.3.9.tar.bz2

cela donne le répertoire eigen-3.3.9 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
 
à 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-release-1.10.0.tar.gz

cela donne le répertoire googletest-release-1.10.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-release-1.10.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-4.4.tar.xz

cela donnera le répertoire ffmpeg-4.4 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-avresample --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="-L/usr/lib64"

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

si vous rencontrez cette erreur pour les possesseurs de nvidia

ERROR: failed checking for nvcc

il faudra éditer le fichier configure et modifier la ligne ainsi

nvccflags_default="-gencode arch=compute_50,code=sm_50 -O2"

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_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

si vous avez l'erreur suivante

libavcodec/rle.c: Dans la fonction « ff_rle_count_pixels »:
libavcodec/rle.c:27:5: erreur interne du compilateur: Erreur de segmentation
 int ff_rle_count_pixels(const uint8_t *start, int len, int bpp, int same)


il faudra éditer le fichier ffbuild/config.mak et supprimer les options d'optimisation (O2 et O3)

on tape 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 -encoders

(extrait)

 V..... libx264              libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (codec h264)
 V..... libx264rgb           libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 RGB (codec h264)
 V..... h264_nvenc           NVIDIA NVENC H.264 encoder (codec h264)
 V..... h264_v4l2m2m         V4L2 mem2mem H.264 encoder wrapper (codec h264)
 V..... h264_vaapi           H.264/AVC (VAAPI) (codec h264)
 V..... nvenc                NVIDIA NVENC H.264 encoder (codec h264)
 V..... nvenc_h264           NVIDIA NVENC H.264 encoder (codec h264)
 V..... libx265              libx265 H.265 / HEVC (codec hevc)
 V..... nvenc_hevc           NVIDIA NVENC hevc encoder (codec hevc)
 V..... hevc_nvenc           NVIDIA NVENC hevc encoder (codec hevc)
 V..... hevc_v4l2m2m         V4L2 mem2mem HEVC encoder wrapper (codec hevc)
 V..... hevc_vaapi           H.265/HEVC (VAAPI) (codec hevc)

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

ffmpeg -hwaccels

voilà le résultat

Hardware acceleration methods:
vdpau
cuda
vaapi
opencl
cuvid


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