[
Présentation
|
Installation de
codecs et outils audio (
Installation
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 GPAC ,
installation de
libx264 ,
installation de x265
,
installation de
mpeg2dec ,
swfdec ) |
Installation de bibliothèques,
API multimedia et outils divers (
OpenCV
,
frei0r ,
vid.stab
,
movit ,
ffmpeg
) ]
Les outils de base pour la vidéo
Dernière modification 27 juillet 2024
( 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.
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
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
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 ou gérer des
flux dolby digital.
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
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.11.1.tar.gz
Cela donne le répertoire faad2-2.11.1
dans lequel on tape
mkdir build
cd build
cmake ..
make
et
enfin en tant que root
make install
ldconfig
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
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.3.tar.gz
cela donne le répertoire fdk-aac-2.0.3
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
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
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 ]
GPAC
est une implémentation de la norme MPEG-4 utilisée par d'autres outils
de plus haut niveau, on installera d'abord
lib64xv-devel. 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.4.0.tar.gz
cela donne le répertoire gpac-2.4.0
dans lequel on tape
./configure --enable-pic
cela donne
** System Configuration
Install prefix: /usr/local
Source path: /usr/local/linux/multimedia/gpac-2.4.0
C compiler: gcc
C++ compiler: g++
make: make
CPU: x86_64
Big Endian: no
** GPAC 2.4 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
dans le fichier /usr/local/include/gpac/configuration.h
j'ai mis en commentaire la ligne 223 comme ceci
//#error "Unknown target platform used with static configuration file"
Installation
de
libx264
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: no
ffms: no
mp4:
gpac
gpl:
yes
thread: posix
opencl: yes
filters: 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.6.tar.gz
cela donne le répertoire x265_3.6 dans
lequel
on tape
cd build
cmake ../source
make
puis en tant que root
make install
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
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 lib64lapack-devel, lib64gtk+3.0-devel,
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.10.0.tar.gz
cela donne le répertoire opencv-4.10.0
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.10.0.tar.gz
cela donne le répertoire opencv_contrib-4.10.0.
On revient dans le répertoire opencv-4.10.0
dans ce répertoire on tape
mkdir build
cd
build
cmake -DWITH_CUDA=OFF -DCMAKE_BUILD_TYPE=Release
-DOPENCV_EXTRA_MODULES_PATH=/home/olivier/compilation/opencv_contrib-4.10.0/modules/
-DWITH_OPENGL=ON -DOPENCV_ENABLE_NONFREE=ON
-DTesseract_INCLUDE_DIR=/usr/include/tesseract -DOPENCV_GENERATE_PKGCONFIG=YES
-DWITH_QT=ON -DOpenGL_GL_PREFERENCE=LEGACY ..
Pour
une GPU Nvidia, 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=ON
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.10.0
=====================================
-- Version
control:
unknown
--
-- Extra modules:
-- Location
(extra):
/home/olivier/compilation/opencv_contrib-4.10.0/modules
-- Version control
(extra): unknown
--
-- Platform:
--
Timestamp:
2024-07-27T08:03:10Z
--
Host:
Linux 6.6.37-desktop-1.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 (9
files):
+ SSSE3 SSE4_1 POPCNT SSE4_2 AVX
-- AVX2 (38
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):
-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
-- 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 signal 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:
cannops 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 (61.3.100)
--
avformat:
YES (61.1.100)
--
avutil:
YES (59.8.100)
--
swscale:
YES (8.1.100)
--
avresample:
NO
--
GStreamer:
YES (1.22.11)
--
v4l/v4l2:
YES (linux/videodev2.h)
--
-- Parallel
framework:
pthreads
--
--
Trace:
YES (with Intel ITT)
--
-- Other third-party libraries:
-- Intel
IPP:
2021.11.0 [2021.11.0]
--
at:
/home/olivier/compilation/opencv-4.10.0/build/3rdparty/ippicv/ippicv_lnx/icv
-- Intel IPP
IW:
sources (2021.11.0)
--
at:
/home/olivier/compilation/opencv-4.10.0/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:
/home/olivier/compilation/opencv-4.10.0/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)
-- Limited
API:
NO
--
numpy:
/home/olivier/.local/lib/python3.10/site-packages/numpy/core/include
(ver 1.23.5)
-- install
path:
lib/python3.10/site-packages/cv2/python-3.10
--
-- Python (for
build):
/bin/python3
--
--
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 (16.7s)
-- Generating done (0.7s)
-- Build files have been written to:
/home/olivier/compilation/opencv-4.10.0/build
Puis sous le répertoire opencv-4.9.0/build
on tape
make
je bute sur cette erreur
hal_internal.cpp:(.text._Z14lapack_gemm32fPKfmS0_mfS0_mfPfmiiii+0x15f) :
référence indéfinie vers « cblas_sgemm »
pour la résoudre j'édite le fichier build/modules/core/CMakeFiles/opencv_core.dir/flags.make
et à la ligne CXX_FLAGS je rajoute -lcblas et au même
endroit je fais pareil pour le fichier link.txt avec un début
modifié ainsi
/bin/c++ -fPIC -lcblas (...)
je retape make et je tombe
maintenant sur cette erreur
dynafu.cpp:(.text._ZN2cv6dynafu10DynaFuImplINS_3MatEEC2ERKNS_5kinfu6ParamsE[_ZN2cv6dynafu10DynaFuImplINS_3MatEEC5ERKNS_5kinfu6ParamsE]+0x39c) :
référence indéfinie vers « glGenRenderbuffersEXT »
on fera la même chose dans le répertoire build/modules/rgbd/CMakeFiles/opencv_rgbd.dir
mais cette fois ci en rajoutant -lGL -lGLX -lGLU
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.3.tar.gz
cela donne le répertoire frei0r-2.3.3
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.15.0.tar.gz
cela donne le répertoire googletest-1.15.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.15.0/googletest
on tape ensuite
make
puis en tant que root
make install
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-7.0.1.tar.xz
cela donnera le répertoire
ffmpeg-7.0.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-chromaprint --enable-avfilter
--enable-librubberband --enable-libopencv --enable-libass
--enable-pic --enable-libvidstab --enable-vdpau
--enable-libnpp --enable-cuda-nvcc
--nvcc=nvcc --enable-cuvid --enable-ffnvcodec
On installera préalablement les packages lib64gsm-devel, lib64schroedinger-devel,
lib64vpx-devel, lib64vdpau-devel, lib64sdl2.0-devel
et lib64opencl-devel
A 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
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
#endifmake -
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
ffmpeg -hide_banner -hwaccels
voilà le résultat
Hardware acceleration methods:
vdpau
cuda
vaapi
drm
opencl