Copyright
Copyright © José
Luis Lara Carrascal 2012-2024
Sumario
Introducción
FFmpeg 7.1
FFmpeg 6.1.2
FFmpeg 5.1.6
FFmpeg 4.4.5
Enlaces
Introducción
He decidido crear este manual para concentrar las instalaciones de FFmpeg, que se incluían en los manuales de LiVES y el ya retirado de la web, de Transcode,
en sus diferentes versiones. Con ello lo que se busca es poder dar
soporte a aquellos programas de reproducción o edición de
vídeo que necesitan esta dependencia, proporcionando diferentes
versiones de este sistema multimedia de codificación y
decodificación de todo tipo de formatos de audio y vídeo.
Desde el 10-04-2014, se incluye también la instalación de x265, cuyo soporte de codificación HEVC fue introducido a partir de la versión 2.2 de FFmpeg.
FFmpeg 7.1
Instalación
Dependencias
Herramientas
de Compilación
Entre paréntesis la
versión con la que se ha compilado FFmpeg 7.1 para la
elaboración de este documento.
* GCC - (14.2.0) o Clang - (19.1.1)
* CMake - (3.30.5)
* M4 - (1.4.19)
* Libtool - (2.5.3)
* Make - (4.4.1)
* Automake - (1.17)
* Autoconf - (2.72)
* NASM - (2.16.03)
* Yasm - (1.3.0)
* Pkg-config - (0.29.2)
* Texinfo - (7.1)
Librerías
de Desarrollo
*
Xorg - (7.7 / xorg-server 21.1.13)
LibX11 - (1.8.10)
LibXext - (1.3.6)
LibXfixes - (6.0.1)
LibXpm - (3.5.17)
* Freetype2 - (2.13.3)
* GnuTLS - (3.8.7.1)
* Imlib2 - (1.12.3)
* Lame - (3.100)
* Libbzip2 - (1.0.8)
* Libnuma - (2.0.14)
* Libogg - (1.3.5)
* Libtheora - (1.1.1)
* Libva - (2.22.0)
* Libvorbis - (1.3.7)
* Libvulkan - (1.3.297)
* Libvpx - (1.14.1)
* Libx264 - (0.164.3193)
* Libx265 - (3.6)
* SDL - (2.30.8)
* Libzimg - (3.0.5)
* Xvidcore - (1.3.7)
* Zlib - (1.3.1)
Descarga
ffmpeg-7.1.tar.xz | x265_4.0.tar.gz
Optimizaciones
$ export
{C,CXX}FLAGS='-O3 -march=znver3 -mtune=znver3'
|
Donde pone znver3 se indica el procesador respectivo de cada sistema seleccionándolo de la siguiente tabla: |
Nota informativa sobre las optimizaciones para GCC
|
* La opción '-march=' establece el procesador mínimo con el que funcionará el programa compilado, la opción '-mtune=' el procesador específico para el que será optimizado.
* Los valores separados por comas, son equivalentes, es decir, que lo mismo da poner '-march=k8' que '-march=athlon64'.
* En versiones de GCC 3.2 e inferiores se utiliza la opción '-mcpu=' en lugar de '-mtune='.
|
Nota informativa sobre las optimizaciones para Clang
|
* La opción '-mtune=' está soportada a partir de la versión 3.4 de Clang.
* Los valores de color azul no son compatibles con Clang.
* Las filas con el fondo de color amarillo son valores exclusivos de Clang y, por lo tanto, no son aplicables con GCC.
|
Valores |
CPU |
Genéricos |
generic |
Produce un código
binario optimizado para la mayor parte de procesadores existentes.
Utilizar este valor si no sabemos el nombre del procesador que tenemos
en nuestro equipo. Este valor sólo es aplicable en la
opción '-mtune=', si utilizamos GCC. Esta opción está disponible a partir de GCC 4.2. |
native |
Produce un código
binario optimizado para el procesador que tengamos en nuestro sistema,
siendo éste detectado utilizando la instrucción cpuid.
Procesadores antiguos pueden no ser detectados utilizando este valor.
Esta opción está disponible a partir de GCC 4.2. |
x86-64 |
Procesador genérico con extensiones 64-bit. Esta opción está disponible a partir de GCC 8 y Clang 1.9. |
x86-64-v2 |
Procesador
genérico con con soporte de instrucciones X86-64 (MMX, SSE,
SSE2, LAHFSAHF, POPCNT, SSE3, SSE4.1, SSE4.2, SSSE3) y extensiones
64-bit. Esta opción está disponible a partir de GCC 11 y Clang 12. |
x86-64-v3 |
Procesador
genérico con con soporte de instrucciones X86-64 (MMX, SSE,
SSE2, LAHFSAHF, POPCNT, SSE3, SSE4.1, SSE4.2, SSSE3, AVX, AVX2, F16C,
FMA, LZCNT, MOVBE, XSAVE, XSAVEC, FMA4) y extensiones 64-bit. Esta
opción está disponible a partir de GCC 11 y Clang 12. |
x86-64-v4 |
Procesador
genérico con con soporte de instrucciones X86-64 (MMX, SSE,
SSE2, LAHFSAHF, POPCNT, SSE3, SSE4.1, SSE4.2, SSSE3, AVX, AVX2, F16C,
FMA, LZCNT, MOVBE, XSAVE, XSAVEC, AVX512*, FMA4) y extensiones 64-bit.
Esta opción está disponible a partir de GCC 11 y Clang 12. |
Intel |
alderlake |
Intel Alderlake con
soporte de instrucciones x86-64 (MOVBE, MMX, SSE, SSE2, SSE3, SSSE3,
SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND,
FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC,
XSAVES, AVX512F, CLWB, AVX512VL, AVX512BW, AVX512DQ, AVX512CD,
AVX512VNNI, AVX512BF16, MOVDIRI, MOVDIR64B, AVX512VP2INTERSECT, ENQCMD,
CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, TSXLDTRK, UINTR, AMX-BF16,
AMX-TILE, AMX-INT8, AVX-VNNI) y extensiones 64-bit. Esta opción
está disponible a partir de GCC 11 y Clang 12. |
arrowlake |
Intel Arrow Lake con
soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES,
XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE, CLWB, MOVDIRI,
MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA,
LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL,
AVX-VNNI, UINTR, AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD y
extensiones 64-bit. Esta opción está disponible a partir
de GCC 14. |
arrowlake-s |
Intel Arrow Lake S con
soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES,
XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE, CLWB, MOVDIRI,
MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA,
LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL,
AVX-VNNI, UINTR, AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD,
AVXVNNIINT16, SHA512, SM3, SM4 y extensiones 64-bit. Esta opción
está disponible a partir de GCC 14. |
atom |
Intel Atom con soporte de
instrucciones MMX, SSE, SSE2, SSE3, SSSE3 y extensiones
64-bit. Esta opción está disponible desde GCC 4.6, hasta GCC 4.8. A partir de GCC 4.9 se utiliza la definición bonnell. |
bonnell |
Intel Bonnell con soporte
de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3 y extensiones
64-bit. Esta opción está disponible a partir de GCC 4.9. |
broadwell |
Intel Broadwell con
soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI,
BMI2, F16C, RDSEED, ADCX, PREFETCHW y extensiones 64-bit. Esta
opción está disponible a partir de GCC 4.9 y Clang 3.6. |
cannonlake |
Intel Cannonlake Server
con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3,
SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND,
FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC,
XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VBMI,
AVX512IFMA, SHA, UMIP y extensiones 64-bit. Esta opción
está disponible a partir de GCC 8 y Clang 3.9. |
cascadelake |
Intel Cascadelake con
soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI,
BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES,
AVX512F, CLWB, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VNNI y
extensiones 64-bit. Esta opción está disponible a
partir de GCC 9 y Clang 8. |
clearwaterforest |
Intel
Clearwater Forest con soporte de instrucciones MOVBE, MMX, SSE, SSE2,
SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND,
XSAVE, XSAVEC, XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX,
GFNI-SSE, CLWB, MOVDIRI, MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2,
BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE,
HRESET, KL, WIDEKL, AVX-VNNI, ENQCMD, UINTR, AVXIFMA, AVXVNNIINT8,
AVXNECONVERT, CMPCCXADD, AVXVNNIINT16, SHA512, SM3, SM4, USER_MSR,
PREFETCHI y extensiones 64-bit. Esta opción está
disponible a partir de GCC 14 y Clang 18. |
cooperlake |
Intel
Cooper Lake con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3,
SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE,
RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT,
XSAVEC, XSAVES, AVX512F, CLWB, AVX512VL, AVX512BW, AVX512DQ, AVX512CD,
AVX512VNNI, AVX512BF16 y extensiones 64-bit. Esta opción
está disponible a partir de GCC 10 y Clang 9. |
core2 |
Intel Core2
con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3 y
extensiones 64-bit. Esta opción está disponible a partir
de GCC 4.3. |
core-avx2 |
Intel Core (Haswell). Esta opción está disponible desde GCC 4.6, hasta GCC 4.8. A partir de GCC 4.9 se utiliza la definición haswell. |
core-avx-i |
Intel Core (ivyBridge)
con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
SSE4.2, AVX, AES, PCLMUL, FSGSBASE, RDRND, F16C y extensiones
64-bit. Esta opción está disponible desde GCC 4.6, hasta GCC 4.8. A partir de GCC 4.9 se utiliza la definición ivybridge. |
corei7 |
Intel Core i7
con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 y
SSE4.2 y extensiones 64-bit. Soporta también los procesadores
Intel Core i3 e i5. Esta opción está disponible
desde GCC 4.6, hasta GCC 4.8. A partir de GCC 4.9 se utiliza la definición nehalem. |
corei7-avx |
Intel Core i7 con
soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2,
AVX, AES y PCLMUL y extensiones 64-bit. Soporta también los
procesadores Intel Core i3 e i5. Esta opción está
disponible desde GCC 4.6, hasta GCC 4.8. A partir de GCC 4.9 se utiliza la definición sandybridge. |
emeraldrapids |
Intel Emerald Rapids. Esta opción está disponible a partir de GCC 13 y Clang 16. |
goldmont |
Intel Goldmont con soporte
de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2,
POPCNT, AES, PCLMUL, RDRND, XSAVE, XSAVEOPT, FSGSBASE y extensiones
64-bit. Esta opción está disponible a partir de GCC 9 y Clang 5. |
goldmont-plus |
Intel Goldmont Plus con
soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
SSE4.2, POPCNT, AES, PCLMUL, RDRND, XSAVE, XSAVEOPT, FSGSBASE, PTWRITE,
RDPID, SGX, UMIP y extensiones 64-bit. Esta opción está
disponible a partir de GCC 9 y Clang 7. |
grandridge |
Intel Grand Ridge con
soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES,
XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE, CLWB, MOVDIRI,
MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA,
LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL,
AVX-VNNI, AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD, RAOINT y
extensiones 64-bit. Esta opción está disponible a partir
de GCC 13 y Clang 16. |
graniterapids |
Intel Grand Ridge con
soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND,
F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW,
AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW,
AVX512DQ, AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI,
VAES, AVX512VBMI2, VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ,
PCONFIG, WBNOINVD, CLWB, MOVDIRI, MOVDIR64B, AVX512VP2INTERSECT,
ENQCMD, CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, TSXLDTRK, UINTR,
AMX-BF16, AMX-TILE, AMX-INT8, AVX-VNNI, AVX512-FP16, AVX512BF16,
AMX-FP16, PREFETCHI y extensiones 64-bit. Esta opción
está disponible a partir de GCC 13 y Clang 16. |
graniterapids-d |
Intel Granite Rapids D con
soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND,
F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW,
AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW,
AVX512DQ, AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI,
VAES, AVX512VBMI2, VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ,
PCONFIG, WBNOINVD, CLWB, MOVDIRI, MOVDIR64B, ENQCMD, CLDEMOTE, PTWRITE,
WAITPKG, SERIALIZE, TSXLDTRK, UINTR, AMX-BF16, AMX-TILE, AMX-INT8,
AVX-VNNI, AVX512FP16, AVX512BF16, AMX-FP16, PREFETCHI, AMX-COMPLEX y
extensiones 64-bit. Esta opción está disponible a partir
de GCC 14 y Clang 17. |
haswell |
Intel Haswell con soporte
de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2,
POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C y
extensiones 64-bit. Esta opción está disponible a
partir de GCC 4.9. |
i386 |
Intel i386.
|
i486 |
Intel i486. |
i586, pentium |
Intel Pentium sin soporte de instrucciones MMX. |
i686 |
Produce un código
binario optimizado para la mayor parte de procesadores compatibles con
la serie 80686 de Intel. Todos los actuales lo son. |
icelake-client |
Intel Icelake Client con
soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI,
BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES,
AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VBMI,
AVX512IFMA, SHA, CLWB, UMIP, RDPID, GFNI, AVX512VBMI2, AVX512VPOPCNTDQ,
AVX512BITALG, AVX512VNNI, VPCLMULQDQ, VAES y extensiones
64-bit. Esta opción está disponible a partir de GCC 8 y Clang 7. |
icelake-server |
Intel Icelake Server con
soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI,
BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES,
AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VBMI,
AVX512IFMA, SHA, CLWB, UMIP, RDPID, GFNI, AVX512VBMI2, AVX512VPOPCNTDQ,
AVX512BITALG, AVX512VNNI, VPCLMULQDQ, VAES, PCONFIG, WBNOINVD y
extensiones 64-bit. Esta opción está disponible a
partir de GCC 8 y Clang 7. |
intel |
Intel Haswell y
Silvermont. Este valor sólo es aplicable en la
opción '-mtune='. Esta opción está disponible
a partir de GCC 4.9. |
ivybridge |
Intel Ivy Bridge con
soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2,
POPCNT, AVX, AES, PCLMUL, FSGSBASE, RDRND, F16C y extensiones
64-bit. Esta opción está disponible a partir de GCC 4.9. |
knl |
Intel Knights Landing con
soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI,
BMI2, F16C, RDSEED, ADCX, PREFETCHW, AVX512F, AVX512PF, AVX512ER y
extensiones 64-bit. Esta opción está disponible a
partir de GCC 5 y Clang 3.4. |
knm |
Intel Knights Mill con
soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI,
BMI2, F16C, RDSEED, ADCX, PREFETCHW, AVX512F, AVX512PF, AVX512ER,
AVX512CD, AVX5124VNNIW, AVX5124FMAPS, AVX512VPOPCNTDQ y extensiones
64-bit. Esta opción está disponible a partir de GCC 8 y Clang 6. |
lakemont |
Intel Quark Lakemont MCU, basado en el procesador Intel Pentium. Esta opción está disponible a partir de GCC 6 y Clang 3.9. |
lunarlake |
Intel Lunar Lake. Esta opción está disponible a partir de GCC 14 y es equivalente a la opción arrowlake-s. |
meteorlake |
Intel Meteor Lake. Esta opción está disponible a partir de GCC 13 y Clang 16. |
nehalem |
Intel Nehalem con soporte
de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT y
extensiones 64-bit. Esta opción está disponible a
partir de GCC 4.9. |
nocona |
Versión mejorada de Intel Pentium4 con soporte de instrucciones MMX, SSE, SSE2, SSE3 y extensiones 64-bit. |
pantherlake |
Intel
Panther Lake con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3,
SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE,
XSAVEC, XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE,
CLWB, MOVDIRI, MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI,
BMI2, F16C, FMA, LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE,
HRESET, KL, WIDEKL, AVX-VNNI, UINTR, AVXIFMA, AVXVNNIINT8,
AVXNECONVERT, CMPCCXADD, AVXVNNIINT16, SHA512, SM3, SM4, PREFETCHI y
extensiones 64-bit. Esta opción está disponible a partir
de GCC 14 y Clang 18. |
penryn |
Intel Penryn con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3 y SSE4.1. |
pentiumpro |
Intel PentiumPro. |
pentium2 |
Intel Pentium2 basado en PentiumPro con soporte de instrucciones MMX. |
pentium3, pentium3m |
Intel Pentium3 basado en PentiumPro con soporte de instrucciones MMX y SSE. |
pentium4, pentium4m |
Intel Pentium4 con soporte de instrucciones MMX, SSE y SSE2. |
pentium-m |
Versión de bajo
consumo de Intel Pentium3 con soporte de instrucciones MMX, SSE y SSE2.
Utilizado por los portátiles Centrino. |
pentium-mmx |
Intel PentiumMMX basado en Pentium con soporte de instrucciones MMX. |
prescott |
Versión mejorada de Intel Pentium4 con soporte de instrucciones MMX, SSE, SSE2 y SSE3. |
raptorlake |
Intel Raptor Lake. Esta opción está disponible a partir de GCC 13 y Clang 16. |
rocketlake |
Intel Rocket Lake con
soporte de instrucciones x86-64 (MOVBE, MMX, SSE, SSE2, SSE3, SSSE3,
SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND,
FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC,
XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VBMI,
AVX512IFMA, SHA, CLWB, UMIP, RDPID, GFNI, AVX512VBMI2, AVX512VPOPCNTDQ,
AVX512BITALG, AVX512VNNI, VPCLMULQDQ, VAES) y extensiones 64-bit. Esta
opción está disponible a partir de GCC 11 y Clang 13. |
sandybridge |
Intel Sandy Bridge con
soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2,
POPCNT, AVX, AES, PCLMUL y extensiones 64-bit. Esta opción
está disponible a partir de GCC 4.9 y Clang 3.6. |
sapphirerapids |
Intel Sapphire Rapids
con soporte de instrucciones x86-64 (MOVBE, MMX, SSE, SSE2, SSE3,
SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE,
RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT,
XSAVEC, XSAVES, AVX512F, CLWB, AVX512VL, AVX512BW, AVX512DQ, AVX512CD,
AVX512VNNI, AVX512BF16, MOVDIRI, MOVDIR64B, AVX512VP2INTERSECT, ENQCMD,
CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, TSXLDTRK, UINTR, AMX-BF16,
AMX-TILE, AMX-INT8, AVX-VNNI) y extensiones 64-bit. Esta opción
está disponible a partir de GCC 11 y Clang 12. |
silvermont |
Intel Silvermont con
soporte de instrucciones MOVBE, MMX, SSE, MOVBE, MMX, SSE, SSE2, SSE3,
SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PCLMU, RDRND y extensiones
64-bit. Esta opción está disponible a partir de GCC 4.9 y Clang 3.6. |
sierraforest |
Intel Sierra Forest con
soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES,
XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE, CLWB, MOVDIRI,
MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA,
LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL,
AVX-VNNI, AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD y extensiones
64-bit. Esta opción está disponible a partir de GCC 13 y Clang 16. |
skylake |
Intel Skylake
con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3,
SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA,
BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES y
extensiones 64-bit. Esta opción está disponible a partir
de GCC 6 y Clang 3.6. |
skylake-avx512 |
Intel Skylake Server
con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3,
SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA,
BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES,
AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD y extensiones 64-bit.
Esta opción está disponible a partir de GCC 6 y Clang 3.9. |
tigerlake |
Intel
Tiger Lake con soporte de instrucciones OVBE, MMX, SSE, SSE2, SSE3,
SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE,
RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT,
XSAVEC, XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD,
AVX512VBMI, AVX512IFMA, SHA, CLWB, UMIP, RDPID, GFNI, AVX512VBMI2,
AVX512VPOPCNTDQ, AVX512BITALG, AVX512VNNI, VPCLMULQDQ, VAES, PCONFIG,
WBNOINVD, MOVDIRI, MOVDIR64B, AVX512VP2INTERSECT y extensiones 64-bit.
Esta opción está disponible a partir de GCC 10 y Clang 10. |
tremont |
Intel Tremont con soporte
de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2,
POPCNT, AES, PCLMUL, RDRND, XSAVE, XSAVEOPT, FSGSBASE, PTWRITE, RDPID,
SGX, UMIP, GFNI-SSE, CLWB, ENCLV y extensiones 64-bit. Esta
opción está disponible a partir de GCC 9 y Clang 7. |
westmere |
Intel Westmere con soporte
de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT,
AES, PCLMUL y extensiones 64-bit. Esta opción está
disponible a partir de GCC 4.9. |
yonah |
Procesadores basados en la microarquitectura de Pentium M, con soporte de instrucciones MMX, SSE, SSE2 y SSE3. |
AMD |
amdfam10, barcelona |
Procesadores basados en
AMD Family 10h core con soporte de instrucciones x86-64 (MMX, SSE,
SSE2, SSE3, SSE4A, 3DNow!, enhanced 3DNow!, ABM y extensiones
64-bit). Esta opción está disponible a partir de GCC 4.3. La definición barcelona está disponible a partir de Clang 3.6. |
athlon, athlon-tbird |
AMD Athlon con soporte de instrucciones MMX, 3DNow!, enhanced 3DNow! y SSE prefetch. |
athlon4, athlon-xp, athlon-mp |
Versiones mejoradas de AMD Athlon con soporte de instrucciones MMX, 3DNow!, enhanced 3DNow! y full SSE. |
bdver1 |
Procesadores basados en
AMD Family 15h core con soporte de instrucciones x86-64 (FMA4, AVX,
XOP, LWP, AES, PCL_MUL, CX16, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3,
SSE4.1, SSE4.2, ABM y extensiones 64-bit). Esta opción
está disponible a partir de GCC 4.7. |
bdver2 |
Procesadores basados en
AMD Family 15h core con soporte de instrucciones x86-64 (BMI, TBM,
F16C, FMA, LWP, AVX, XOP, LWP, AES, PCL_MUL, CX16, MMX, SSE, SSE2,
SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM y extensiones
64-bit). Esta opción está disponible a partir de GCC 4.7. |
bdver3 |
Procesadores basados en
AMD Family 15h core con soporte de instrucciones x86-64 (FMA4, AVX,
XOP, LWP, AES, PCL_MUL, CX16, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3,
SSE4.1, SSE4.2, ABM y extensiones 64-bit). Esta opción
está disponible a partir de GCC 4.8 y Clang 3.4. |
bdver4 |
Procesadores basados en
AMD Family 15h core con soporte de instrucciones x86-64 (BMI, BMI2,
TBM, F16C, FMA, FMA4, FSGSBASE, AVX, AVX2, XOP, LWP, AES, PCL_MUL,
CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM y
extensiones 64-bit). Esta opción está disponible a partir
de GCC 4.9 y Clang 3.5. |
btver1 |
Procesadores basados en
AMD Family 14h core con soporte de instrucciones x86-64 (MMX, SSE,
SSE2, SSE3, SSE4A, CX16, ABM y extensiones 64-bit). Esta
opción está disponible a partir de GCC 4.6. |
btver2 |
Procesadores basados en
AMD Family 16h core con soporte de instrucciones x86-64 (MOVBE, F16C,
BMI, AVX, PCL_MUL, AES, SSE4.2, SSE4.1, CX16, ABM, SSE4A, SSSE3, SSE3,
SSE2, SSE, MMX y extensiones 64-bit). Esta opción
está disponible a partir de GCC 4.8. |
geode |
AMD integrado con soporte de instrucciones MMX y 3DNow!. Esta opción está disponible a partir de GCC 4.3. |
k6 |
AMD K6 con soporte de instrucciones MMX. |
k6-2, k6-3 |
Versiones mejoradas de AMD K6 con soporte de instrucciones MMX y 3DNow!. |
k8, opteron, athlon64, athlon-fx |
Procesadores basados en
AMD K8 core con soporte de instrucciones x86-64 (MMX, SSE, SSE2,
3DNow!, enhanced 3DNow! y extensiones 64-bit). |
k8-sse3, opteron-sse3, athlon64-sse3 |
Versiones mejoradas de AMD
K8 core con soporte de instrucciones SSE3. Esta opción
está disponible a partir de GCC 4.3. |
znver1 |
Procesadores basados en
AMD Family 17h core con soporte de instrucciones x86-64 (BMI, BMI2,
F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX, SHA, CLZERO, AES,
PCL_MUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1,
SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT y extensiones
64-bit). Esta opción está disponible a partir de GCC 6 y Clang 4. |
znver2 |
Procesadores basados en
AMD Family 17h core con soporte de instrucciones x86-64 (BMI, BMI2,
,CLWB, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX, SHA,
CLZERO, AES, PCL_MUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3,
SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT y
extensiones 64-bit). Esta opción está disponible a
partir de GCC 9 y Clang 9. |
znver3 |
Procesadores basados en
AMD Family 19h core con soporte de instrucciones x86-64 (BMI, BMI2,
CLWB, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX, SHA,
CLZERO, AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3,
SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT, RDPID,
WBNOINVD, PKU, VPCLMULQDQ, VAES) y extensiones 64-bit. Esta
opción está disponible a partir de GCC 11 y Clang 12. |
znver4 |
Procesadores basados en
AMD Family 19h core con soporte de instrucciones x86-64 (BMI, BMI2,
CLWB, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX, SHA,
CLZERO, AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3,
SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT, RDPID,
WBNOINVD, PKU, VPCLMULQDQ, VAES, AVX512F, AVX512DQ, AVX512IFMA,
AVX512CD, AVX512BW, AVX512VL, AVX512BF16, AVX512VBMI, AVX512VBMI2,
AVX512VNNI, AVX512BITALG, AVX512VPOPCNTDQ, GFNI) y extensiones 64-bit.
Esta opción está disponible a partir de GCC 12.3 y Clang 16. |
znver5 |
Procesadores basados en
AMD Family 1ah core con soporte de instrucciones x86-64 (BMI, BMI2,
CLWB, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX, SHA,
CLZERO, AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3,
SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT, RDPID,
WBNOINVD, PKU, VPCLMULQDQ, VAES, AVX512F, AVX512DQ, AVX512IFMA,
AVX512CD, AVX512BW, AVX512VL, AVX512BF16, AVX512VBMI, AVX512VBMI2,
AVX512VNNI, AVX512BITALG, AVX512VPOPCNTDQ, GFNI, AVXVNNI, MOVDIRI,
MOVDIR64B, AVX512VP2INTERSECT, PREFETCHI) y extensiones 64-bit. Esta
opción está disponible a partir de GCC 14. |
Optimizaciones adicionales
Optimizaciones adicionales |
GCC |
Graphite
|
$
export {C,CXX}FLAGS+=' -ftree-loop-linear
-floop-strip-mine -floop-block' |
IPA
|
$ export {C,CXX}FLAGS+=' -fipa-pta'
|
Parámetros adicionales
Establecer la ruta de búsqueda de directorios de librerías en sistemas de 64 bits multiarquitectura |
$ export
LDFLAGS+=" -L/usr/lib64 -L/usr/local/lib64 -L/opt/gcc14/lib64" |
Cada usuario tendrá
que establecer la ruta de búsqueda de directorios, en
función de la distribución que utilice. |
Establecer el uso de enlazador dinámico para Mold |
$ export LDFLAGS+=' -fuse-ld=mold' |
Establecer la variable de entorno de uso de compilador para Clang |
$ export CC=clang CXX=clang++ |
Extracción y Configuración de x265
$ tar zxvf x265_4.0.tar.gz
$ cd x265_4.0
$ cmake -S source -B build -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=lib64
|
Explicación de los
comandos
-S source -B build : Establece el directorio del código fuente y crea de forma automática el directorio de compilación.
-DCMAKE_INSTALL_PREFIX=/usr : Instala el programa y las
librerías en el
directorio principal /usr.
-DLIB_INSTALL_DIR=lib64 : Instala la librería en /usr/lib64, en sistemas de 64 bits multiarquitectura. La ubicación y el
nombre de este directorio, puede variar en función de la
distribución que cada usuario use.
Compilación
Parámetros de compilación opcionales
VERBOSE=1 : Muestra más información en el proceso de compilación.
-j$(nproc):
Establece el número de procesos de compilación en
paralelo, en función del número de
núcleos e hilos que tenga nuestro procesador, tomando como
referencia la información mostrada por el sistema con el comando
correspondiente. Si nuestro procesador es mononúcleo de un solo
hilo, no añadir esta opción.
Instalación
como root
$ su
# make -C build install/strip
# ldconfig -v
|
Estadísticas de Compilación e Instalación de x265
Estadísticas de Compilación e Instalación de x265 |
CPU |
AMD Ryzen 5 5500 |
MHz |
3600 (BoostMax=4457) |
RAM |
32 GB |
Sistema de archivos |
XFS |
Versión del Kernel |
6.11.3-ml SMP PREEMPT_DYNAMIC x86_64 |
Modo de frecuencia de la CPU |
powersave (balance performance) |
Planificador de CPU |
BMQ |
Versión de Glibc |
2.40 |
Enlazador dinámico |
Mold 2.34.0 |
Compilador |
GCC 14.2.0 + Ccache 4.10.2 |
Parámetros de optimización |
-03 -march=znver3 -mtune=znver3 -ftree-loop-linear -floop-strip-mine -floop-block -fipa-pta |
Parámetros de compilación |
VERBOSE=1 -j12 |
Tiempo de compilación |
38" |
Archivos instalados |
6 |
|
Enlaces simbólicos creados |
1 |
/usr/lib64/libx265.so
|
Ocupación de espacio en disco |
13,5 MB |
Desinstalación
como root
1)
MODO TRADICIONAL
En el directorio de compilación
ejecutamos el siguiente comando:
2)
MODO MANUALINUX
El principal inconveniente del comando anterior es
que
tenemos que tener el directorio de compilación en nuestro
sistema para poder desinstalar el programa. En algunos casos esto
supone muchos megas de espacio en disco. Con el paquete de scripts que
pongo a continuación logramos evitar
el único inconveniente que tiene la compilación
de
programas, y es el tema de la desinstalación de los mismos
sin
la necesidad de tener obligatoriamente una copia de las fuentes
compiladas.
x265-4.0-scripts.tar.gz
$ su
# tar zxvf x265-4.0-scripts.tar.gz
# cd x265-4.0-scripts
# ./Desinstalar_x265-4.0 |
Copia de Seguridad
como root
Con este otro script creamos una copia de seguridad de los binarios
compilados, recreando la estructura de directorios de los mismos en un
directorio de copias de seguridad (copibin)
que se crea en el directorio /var. Cuando se haya creado el paquete comprimido de
los binarios podemos copiarlo como usuario a nuestro home
y borrar el que ha creado el script de respaldo, teniendo en cuenta que si queremos
volver a restaurar la copia, tendremos que volver a copiarlo al lugar
donde se ha creado.
$ su
# tar zxvf x265-4.0-scripts.tar.gz
# cd x265-4.0-scripts
# ./Respaldar_x265-4.0 |
Restaurar la Copia de
Seguridad
como root
Y con este otro script (que se copia de forma automática
cuando
creamos la copia de respaldo del programa) restauramos la copia de
seguridad como root cuando resulte necesario.
$ su
# cd /var/copibin/restaurar_copias
# ./Restaurar_x265-4.0
|
Extracción y Configuración de FFmpeg
$ tar Jxvf ffmpeg-7.1.tar.xz
$ cd ffmpeg-7.1
$ ./configure
--prefix=/usr --enable-shared --enable-gpl --enable-postproc \
--enable-libmp3lame --enable-libvorbis --enable-libvpx --enable-libx264 \
--enable-libxvid --enable-libtheora --enable-libx265 --enable-libzimg \
--enable-gnutls --disable-static --libdir=/usr/lib64 |
Explicación de los
comandos
--prefix=/usr : Instala el programa y las
librerías en el
directorio principal /usr.
--enable-shared : Activa la compilación de las
librerías compartidas.
--enable-gpl
: Necesario para poder activar la compilación de la
librería de postprocesado.
--enable-postproc
: Activa la compilación de la librería de
postprocesado.
--enable-libmp3lame
: Activa el soporte de Lame.
--enable-libvorbis
: Activa el soporte de Vorbis.
--enable-libvpx : Activa el soporte de VP8 mediante la librería, Libvpx.
--enable-libx264 : Activa el soporte de codificación de H.264
mediante x264.
--enable-libxvid
: Activa el soporte de codificación de Xvid
mediante la librería, Libxvidcore.
--enable-libtheora : Activa el soporte de codificación de Theora mediante la librería, Libtheora.
--enable-libx265
: Activa el soporte de codificación HEVC mediante
la librería, Libx265.
--enable-libzimg
: Activa el soporte de escalado de vídeo
mediante la librería, Libzimg.
--enable-gnutls : Activa el soporte de conexiones SSL en la reproducción multimedia en línea, mediante la librería, GnuTLS.
--disable-static
: Desactiva la compilación de las librerías
estáticas, que no son necesarias para compilar los programas y
librerías que dependan de este paquete.
--libdir=/usr/lib64 : Instala las librerías en /usr/lib64, en sistemas de 64 bits multiarquitectura. La ubicación y el
nombre de este directorio, puede variar en función de la
distribución que cada usuario use.
Parámetros de configuración opcionales
--cc="${CC}" --cxx="${CXX}" :
Sincronizamos la variable de entorno de uso de compilador establecida para Clang, con el parámetro específico de configuración del proceso de compilación de FFmpeg. Si utilizamos Clang con Ccache como prefijo, también tendremos que utilizar este parámetro.
Para ver más parámetros de configuración opcionales ejecutar ./configure --help
Compilación
Parámetros de compilación opcionales
V=1 : Muestra más información en el proceso de compilación.
-j$(nproc):
Establece el número de procesos de compilación en
paralelo, en función del número de
núcleos e hilos que tenga nuestro procesador, tomando como
referencia la información mostrada por el sistema con el comando
correspondiente. Si nuestro procesador es mononúcleo de un solo
hilo, no añadir esta opción.
Instalación
como root
$ su
# make install
# ldconfig -v
|
Versiones de las librerías de FFmpeg 7.1 instaladas
[jose@localhost ~]$ ffmpeg -version
ffmpeg version 7.1 Copyright (c) 2000-2024 the FFmpeg developers
built with gcc 14.2.0 (GCC)
configuration: --prefix=/usr --enable-shared --enable-gpl
--enable-postproc --enable-libmp3lame --enable-libvorbis
--enable-libvpx --enable-libx264 --enable-libxvid --enable-libtheora
--enable-libx265 --enable-libzimg --enable-gnutls --disable-static
--libdir=/usr/lib64
libavutil 59. 39.100 / 59. 39.100
libavcodec 61. 19.100 / 61. 19.100
libavformat 61. 7.100 / 61. 7.100
libavdevice 61. 3.100 / 61. 3.100
libavfilter 10. 4.100 / 10. 4.100
libswscale 8. 3.100 / 8. 3.100
libswresample 5. 3.100 / 5. 3.100
libpostproc 58. 3.100 / 58. 3.100
|
Estadísticas de Compilación e Instalación de FFmpeg 7.1
Estadísticas de Compilación e Instalación de FFmpeg 7.1 |
CPU |
AMD Ryzen 5 5500 |
MHz |
3600 (BoostMax=4457) |
RAM |
32 GB |
Sistema de archivos |
XFS |
Versión del Kernel |
6.11.3-ml SMP PREEMPT_DYNAMIC x86_64 |
Modo de frecuencia de la CPU |
powersave (balance performance) |
Planificador de CPU |
BMQ |
Versión de Glibc |
2.40 |
Enlazador dinámico |
Mold 2.34.0 |
Compilador |
GCC 14.2.0 + Ccache 4.10.2 |
Parámetros de optimización |
-03 -march=znver3 -mtune=znver3 -ftree-loop-linear -floop-strip-mine -floop-block -fipa-pta |
Parámetros de compilación |
V=1 -j12 |
Tiempo de compilación |
1' 53" |
Archivos instalados |
248 |
|
Enlaces simbólicos creados |
16 |
|
Ocupación de espacio en disco |
44,4 MB |
Desinstalación
como root
1)
MODO TRADICIONAL
En el directorio de compilación
ejecutamos el siguiente comando:
2)
MODO MANUALINUX
ffmpeg-7.1-scripts.tar.gz
$ su
# tar zxvf ffmpeg-7.1-scripts.tar.gz
# cd ffmpeg-7.1-scripts
# ./Desinstalar_ffmpeg-7.1 |
Copia de Seguridad
como root
$ su
# tar zxvf ffmpeg-7.1-scripts.tar.gz
# cd ffmpeg-7.1-scripts
# ./Respaldar_ffmpeg-7.1 |
Restaurar la Copia de
Seguridad
como root
$ su
# cd /var/copibin/restaurar_copias
# ./Restaurar_ffmpeg-7.1
|
FFmpeg 6.1.2
Preliminares
1)
Editamos el archivo /etc/ld.so.conf
y añadimos /opt/ffmpeg61/lib64
include ld.so.conf.d/*.conf
/usr/X11R6/lib
/usr/lib
/usr/lib/qt3/lib
/usr/local/lib
/opt/ffmpeg61/lib64
|
2)
En nuestro home,
editamos el archivo .bashrc (si no existe lo creamos)
y añadimos /opt/ffmpeg61/bin a nuestro PATH
export
PATH=/opt/ffmpeg61/bin:$PATH |
Si queremos establecer una variable de entorno global del sistema,
abrimos un editor de texto y añadimos lo descrito
anteriormente,
#!/bin/sh
export
PATH=/opt/ffmpeg61/bin:$PATH
|
Lo guardamos con el nombre variables.sh, y lo instalamos en /etc/profile.d.
$ su -c "install -m755 variables.sh /etc/profile.d"
|
Tenemos que cerrar el emulador de terminal y volverlo a abrir para que
la variable de entorno aplicada sea efectiva. Es conveniente guardar
una copia de este script para posteriores
instalaciones de nuestro sistema, teniendo en cuenta que es el que se
va a utilizar a partir de ahora en todos los manuales de esta web, para
establecer variables de entorno globales, excepto en aquellas que
sólo afectan al usuario, en las que se utilizará el
archivo de configuración personal, ~/.bashrc.
La ventaja de utilizar el directorio /etc/profile.d es que es común a todas las distribuciones y nos evita tener que editar otros archivos del sistema como por ejemplo, /etc/profile.
Instalación
Dependencias
Herramientas
de Compilación
Entre paréntesis la
versión con la que se ha compilado FFmpeg 6.1.2 para la
elaboración de este documento.
* GCC - (14.2.0) o Clang - (19.1.1)
* M4 - (1.4.19)
* Libtool - (2.5.3)
* Make - (4.4.1)
* Automake - (1.17)
* Autoconf - (2.72)
* NASM - (2.16.03)
* Pkg-config - (0.29.2)
* Texinfo - (7.1)
Librerías
de Desarrollo
*
Xorg - (7.7 / xorg-server 21.1.13)
LibX11 - (1.8.10)
LibXext - (1.3.6)
LibXfixes - (6.0.1)
LibXpm - (3.5.17)
* Freetype2 - (2.13.3)
* GnuTLS - (3.8.7.1)
* Imlib2 - (1.12.3)
* Lame - (3.100)
* Libbzip2 - (1.0.8)
* Libogg - (1.3.5)
* Libtheora - (1.1.1)
* Libva - (2.22.0)
* Libvorbis - (1.3.7)
* Libvpx - (1.14.1)
* Libvulkan - (1.3.297)
* Libx264 - (0.164.3193)
* Libx265 - (4.0)
* SDL - (2.30.8)
* Xvidcore - (1.3.7)
* Zlib - (1.3.1)
Descarga
ffmpeg-6.1.2.tar.lz
Firma Digital
ffmpeg-6.1.2.tar.lz.asc
Verificar la firma digital del paquete
$ gpg --import manualinux.asc
$ gpg --verify ffmpeg-6.1.2.tar.lz.asc ffmpeg-6.1.2.tar.lz |
Optimizaciones
Optimizaciones adicionales
Optimizaciones adicionales |
GCC |
Graphite
|
$
export {C,CXX}FLAGS+=' -ftree-loop-linear
-floop-strip-mine -floop-block' |
IPA
|
$ export {C,CXX}FLAGS+=' -fipa-pta'
|
Parámetros adicionales
Parámetros adicionales de eliminación de errores específicos en el proceso de compilación |
GCC 14 |
$ export CFLAGS+=' -Wno-incompatible-pointer-types' |
Establecer la ruta de búsqueda de directorios de librerías en sistemas de 64 bits multiarquitectura |
$ export
LDFLAGS+=" -L/usr/lib64 -L/usr/local/lib64 -L/opt/gcc14/lib64" |
Cada usuario tendrá
que establecer la ruta de búsqueda de directorios, en
función de la distribución que utilice. |
Establecer el uso de enlazador dinámico para Mold |
$ export LDFLAGS+=' -fuse-ld=mold' |
Establecer la variable de entorno de uso de compilador para Clang |
$ export CC=clang CXX=clang++ |
Extracción y Configuración
$ tar axvf ffmpeg-6.1.2.tar.lz
$ cd ffmpeg-6.1.2
$ export LDFLAGS+=" -Wl,-rpath,/opt/ffmpeg61/lib64"
$ ./configure
--prefix=/opt/ffmpeg61 --enable-shared --enable-gpl --enable-postproc \
--enable-libmp3lame --enable-libvorbis --enable-libvpx --enable-libx264 \
--enable-libxvid --enable-libtheora --enable-libx265 --enable-gnutls \
--disable-static --progs-suffix=61 --libdir=/opt/ffmpeg61/lib64 |
Explicación de los
comandos
export LDFLAGS+=" -Wl,-rpath,/opt/ffmpeg61/lib64" : Le indicamos a ld que busque primero las librerías contra las que se tienen que
enlazar los binarios ejecutables de FFmpeg 6.1.2, en /opt/ffmpeg61/lib64,
para evitar que durante la instalación del programa, se enlacen
contra las librerías de la otra versión de FFmpeg, que tengamos instalada en nuestro sistema, y no contra las que estamos instalando.
--prefix=/opt/ffmpeg61 : Instala el programa y las
librerías en el
directorio /opt/ffmpeg61.
--enable-shared : Activa la compilación de las
librerías compartidas.
--enable-gpl
: Necesario para poder activar la compilación de la
librería de postprocesado.
--enable-postproc
: Activa la compilación de la librería de
postprocesado.
--enable-libmp3lame
: Activa el soporte de Lame.
--enable-libvorbis
: Activa el soporte de Vorbis.
--enable-libvpx : Activa el soporte de VP8 mediante la librería, Libvpx.
--enable-libx264 : Activa el soporte de codificación de H.264
mediante x264.
--enable-libxvid
: Activa el soporte de codificación de Xvid
mediante la librería, Libxvidcore.
--enable-libtheora : Activa el soporte de codificación de Theora mediante la librería, Libtheora.
--enable-libx265
: Activa el soporte de codificación HEVC mediante
la librería, Libx265.
--disable-static
: Desactiva la compilación de las librerías estáticas, que no son
necesarias para compilar los programas y librerías que dependan de este
paquete.
--progs-suffix=61 : Añade un sufijo a los binarios ejecutables instalados para poder diferenciarlos de otras versiones de FFmpeg que
tengamos instaladas en nuestro sistema, empezando por la principal
del mismo.
--libdir=/opt/ffmpeg61/lib64 : Instala las librerías en /opt/ffmpeg61/lib64, en sistemas de 64 bits multiarquitectura.
Parámetros de configuración opcionales
--cc="${CC}" --cxx="${CXX}" :
Sincronizamos la variable de entorno de uso de compilador establecida para Clang, con el parámetro específico de configuración del proceso de compilación de FFmpeg. Si utilizamos Clang con Ccache como prefijo, también tendremos que utilizar este parámetro.
Para ver más parámetros de configuración opcionales ejecutar ./configure --help
Compilación
Parámetros de compilación opcionales
Instalación
como root
$ su
# make install
# ldconfig -v
|
Versiones de las librerías de FFmpeg 6.1.2 instaladas
[jose@localhost ~]$ ffmpeg61 -version
ffmpeg version 6.1.2 Copyright (c) 2000-2024 the FFmpeg developers
built with gcc 14.2.0 (GCC)
configuration: --prefix=/opt/ffmpeg61 --enable-shared --enable-gpl
--enable-postproc --enable-libmp3lame --enable-libvorbis
--enable-libvpx --enable-libx264 --enable-libxvid --enable-libtheora
--enable-libx265 --enable-gnutls --disable-static --progs-suffix=61
--libdir=/opt/ffmpeg61/lib64
libavutil 58. 29.100 / 58. 29.100
libavcodec 60. 31.102 / 60. 31.102
libavformat 60. 16.100 / 60. 16.100
libavdevice 60. 3.100 / 60. 3.100
libavfilter 9. 12.100 / 9. 12.100
libswscale 7. 5.100 / 7. 5.100
libswresample 4. 12.100 / 4. 12.100
libpostproc 57. 3.100 / 57. 3.100
|
Estadísticas de Compilación e Instalación de FFmpeg 6.1.2
Estadísticas de Compilación e Instalación de FFmpeg 6.1.2 |
CPU |
AMD Ryzen 5 5500 |
MHz |
3600 (BoostMax=4457) |
RAM |
32 GB |
Sistema de archivos |
XFS |
Versión del Kernel |
6.11.3-ml SMP PREEMPT_DYNAMIC x86_64 |
Modo de frecuencia de la CPU |
powersave (balance performance) |
Planificador de CPU |
BMQ |
Versión de Glibc |
2.40 |
Enlazador dinámico |
Mold 2.34.0 |
Compilador |
GCC 14.2.0 + Ccache 4.10.2 |
Parámetros de optimización |
-03 -march=znver3 -mtune=znver3 -ftree-loop-linear -floop-strip-mine -floop-block -fipa-pta |
Parámetros de compilación |
V=1 -j12 |
Tiempo de compilación |
1' 38" |
Archivos instalados |
247 |
|
Enlaces simbólicos creados |
16 |
|
Ocupación de espacio en disco |
43,3 MB |
Desinstalación
como root
1)
MODO TRADICIONAL
En el directorio de compilación
ejecutamos el siguiente comando:
2)
MODO MANUALINUX
ffmpeg-6.1.2-scripts.tar.gz
$ su
# tar zxvf ffmpeg-6.1.2-scripts.tar.gz
# cd ffmpeg-6.1.2-scripts
# ./Desinstalar_ffmpeg-6.1.2 |
Copia de Seguridad
como root
$ su
# tar zxvf ffmpeg-6.1.2-scripts.tar.gz
# cd ffmpeg-6.1.2-scripts
# ./Respaldar_ffmpeg-6.1.2 |
Restaurar la Copia de
Seguridad
como root
$ su
# cd /var/copibin/restaurar_copias
# ./Restaurar_ffmpeg-6.1.2
|
Variables de entorno a
establecer para poder compilar los paquetes con FFmpeg 6.1.2
$ export PKG_CONFIG_PATH=/opt/ffmpeg61/lib64/pkgconfig:$PKG_CONFIG_PATH
$ export LDFLAGS+=" -L/opt/ffmpeg61/lib64" |
FFmpeg 5.1.6
Preliminares
1)
Editamos el archivo /etc/ld.so.conf
y añadimos /opt/ffmpeg51/lib64
include ld.so.conf.d/*.conf
/usr/X11R6/lib
/usr/lib
/usr/lib/qt3/lib
/usr/local/lib
/opt/ffmpeg51/lib64 |
2)
En nuestro home,
editamos el archivo .bashrc (si no existe lo creamos)
y añadimos /opt/ffmpeg51/bin a nuestro PATH
export
PATH=/opt/ffmpeg51/bin:$PATH |
Si queremos establecer una variable de entorno global del sistema,
abrimos un editor de texto y añadimos lo descrito
anteriormente,
#!/bin/sh
export
PATH=/opt/ffmpeg51/bin:$PATH
|
Lo guardamos con el nombre variables.sh, y lo instalamos en /etc/profile.d.
$ su -c "install -m755 variables.sh /etc/profile.d"
|
Tenemos que cerrar el emulador de terminal y volverlo a abrir para que
la variable de entorno aplicada sea efectiva. Es conveniente guardar
una copia de este script para posteriores
instalaciones de nuestro sistema, teniendo en cuenta que es el que se
va a utilizar a partir de ahora en todos los manuales de esta web, para
establecer variables de entorno globales, excepto en aquellas que
sólo afectan al usuario, en las que se utilizará el
archivo de configuración personal, ~/.bashrc.
La ventaja de utilizar el directorio /etc/profile.d es que es común a todas las distribuciones y nos evita tener que editar otros archivos del sistema como por ejemplo, /etc/profile.
Instalación
Dependencias
Herramientas
de Compilación
Entre paréntesis la
versión con la que se ha compilado FFmpeg 5.1.6 para la
elaboración de este documento.
* GCC - (14.2.0) o Clang - (19.1.1)
* M4 - (1.4.19)
* Libtool - (2.5.3)
* Make - (4.4.1)
* Automake - (1.17)
* Autoconf - (2.72)
* NASM - (2.16.03)
* Pkg-config - (0.29.2)
* Texinfo - (7.1.1)
Librerías
de Desarrollo
*
Xorg - (7.7 / xorg-server 21.1.13)
LibX11 - (1.8.10)
LibXext - (1.3.6)
LibXfixes - (6.0.1)
LibXpm - (3.5.17)
* Freetype2 - (2.13.3)
* GnuTLS - (3.8.7.1)
* Imlib2 - (1.12.3)
* Lame - (3.100)
* Libbzip2 - (1.0.8)
* Libogg - (1.3.5)
* Libtheora - (1.1.1)
* Libva - (2.22.0)
* Libvorbis - (1.3.7)
* Libvpx - (1.14.1)
* Libvulkan - (1.3.297)
* Libx264 - (0.164.3193)
* Libx265 - (4.0)
* SDL - (2.30.8)
* Xvidcore - (1.3.7)
* Zlib - (1.3.1)
Descarga
ffmpeg-5.1.6.tar.lz
Firma Digital
ffmpeg-5.1.6.tar.lz.asc
Verificar la firma digital del paquete
$ gpg --import manualinux.asc
$ gpg --verify ffmpeg-5.1.6.tar.lz.asc ffmpeg-5.1.6.tar.lz |
Optimizaciones
Optimizaciones adicionales
Optimizaciones adicionales |
GCC |
Graphite
|
$
export {C,CXX}FLAGS+=' -ftree-loop-linear
-floop-strip-mine -floop-block' |
IPA
|
$ export {C,CXX}FLAGS+=' -fipa-pta'
|
Parámetros adicionales
Parámetros adicionales de eliminación de errores específicos en el proceso de compilación |
GCC 14 |
$ export CFLAGS+=' -Wno-incompatible-pointer-types' |
Establecer la ruta de búsqueda de directorios de librerías en sistemas de 64 bits multiarquitectura |
$ export
LDFLAGS+=" -L/usr/lib64 -L/usr/local/lib64 -L/opt/gcc14/lib64" |
Cada usuario tendrá
que establecer la ruta de búsqueda de directorios, en
función de la distribución que utilice. |
Establecer el uso de enlazador dinámico para Mold |
$ export LDFLAGS+=' -fuse-ld=mold' |
Establecer la variable de entorno de uso de compilador para Clang |
$ export CC=clang CXX=clang++ |
Extracción y Configuración
$ tar axvf ffmpeg-5.1.6.tar.lz
$ cd ffmpeg-5.1.6
$ export LDFLAGS+=" -Wl,-rpath,/opt/ffmpeg51/lib64"
$ ./configure
--prefix=/opt/ffmpeg51 --enable-shared --enable-gpl --enable-postproc \
--enable-libmp3lame --enable-libvorbis --enable-libvpx --enable-libx264 \
--enable-libxvid --enable-libtheora --enable-libx265 --enable-gnutls \
--disable-static --progs-suffix=51 --libdir=/opt/ffmpeg51/lib64 |
Explicación de los
comandos
export LDFLAGS+=" -Wl,-rpath,/opt/ffmpeg51/lib64" : Le indicamos a ld que busque primero las librerías contra las que se tienen que
enlazar los binarios ejecutables de FFmpeg 5.1, en /opt/ffmpeg51/lib64,
para evitar que durante la instalación del programa, se enlacen
contra las librerías de la otra versión de FFmpeg, que tengamos instalada en nuestro sistema, y no contra las que estamos instalando.
--prefix=/opt/ffmpeg51 : Instala el programa y las
librerías en el
directorio /opt/ffmpeg51.
--enable-shared : Activa la compilación de las
librerías compartidas.
--enable-gpl
: Necesario para poder activar la compilación de la
librería de postprocesado.
--enable-postproc
: Activa la compilación de la librería de
postprocesado.
--enable-libmp3lame
: Activa el soporte de Lame.
--enable-libvorbis
: Activa el soporte de Vorbis.
--enable-libvpx : Activa el soporte de VP8 mediante la librería, Libvpx.
--enable-libx264 : Activa el soporte de codificación de H.264
mediante x264.
--enable-libxvid
: Activa el soporte de codificación de Xvid
mediante la librería, Libxvidcore.
--enable-libtheora : Activa el soporte de codificación de Theora mediante la librería, Libtheora.
--enable-libx265
: Activa el soporte de codificación HEVC mediante
la librería, Libx265.
--disable-static
: Desactiva la compilación de las librerías estáticas, que no son
necesarias para compilar los programas y librerías que dependan de este
paquete.
--progs-suffix=51 : Añade un sufijo a los binarios ejecutables instalados para poder diferenciarlos de otras versiones de FFmpeg que
tengamos instaladas en nuestro sistema, empezando por la principal
del mismo.
--libdir=/opt/ffmpeg51/lib64 : Instala las librerías en /opt/ffmpeg51/lib64, en sistemas de 64 bits multiarquitectura.
Parámetros de configuración opcionales
--cc="${CC}" --cxx="${CXX}" :
Sincronizamos la variable de entorno de uso de compilador establecida para Clang, con el parámetro específico de configuración del proceso de compilación de FFmpeg. Si utilizamos Clang con Ccache como prefijo, también tendremos que utilizar este parámetro.
Para ver más parámetros de configuración opcionales ejecutar ./configure --help
Compilación
Parámetros de compilación opcionales
Instalación
como root
$ su
# make install
# ldconfig -v
|
Versiones de las librerías de FFmpeg 5.1.6 instaladas
[jose@localhost ~]$ ffmpeg51 -version
ffmpeg version 5.1.6 Copyright (c) 2000-2024 the FFmpeg developers
built with gcc 14.2.0 (GCC)
configuration: --prefix=/opt/ffmpeg51 --enable-shared --enable-gpl
--enable-postproc --enable-libmp3lame --enable-libvorbis
--enable-libvpx --enable-libx264 --enable-libxvid --enable-libtheora
--enable-libx265 --enable-gnutls --disable-static --progs-suffix=51
--libdir=/opt/ffmpeg51/lib64
libavutil 57. 28.100 / 57. 28.100
libavcodec 59. 37.100 / 59. 37.100
libavformat 59. 27.100 / 59. 27.100
libavdevice 59. 7.100 / 59. 7.100
libavfilter 8. 44.100 / 8. 44.100
libswscale 6. 7.100 / 6. 7.100
libswresample 4. 7.100 / 4. 7.100
libpostproc 56. 6.100 / 56. 6.100
|
Estadísticas de Compilación e Instalación de FFmpeg 5.1.6
Estadísticas de Compilación e Instalación de FFmpeg 5.1.6 |
CPU |
AMD Ryzen 5 5500 |
MHz |
3600 (BoostMax=4457) |
RAM |
32 GB |
Sistema de archivos |
XFS |
Versión del Kernel |
6.11.3-ml SMP PREEMPT_DYNAMIC x86_64 |
Modo de frecuencia de la CPU |
powersave (balance performance) |
Planificador de CPU |
BMQ |
Versión de Glibc |
2.40 |
Enlazador dinámico |
Mold 2.34.0 |
Compilador |
GCC 14.2.0 + Ccache 4.10.2 |
Parámetros de optimización |
-03 -march=znver3 -mtune=znver3 -ftree-loop-linear -floop-strip-mine -floop-block -fipa-pta |
Parámetros de compilación |
V=1 -j12 |
Tiempo de compilación |
1' 38" |
Archivos instalados |
242 |
|
Enlaces simbólicos creados |
16 |
|
Ocupación de espacio en disco |
40,7 MB |
Desinstalación
como root
1)
MODO TRADICIONAL
En el directorio de compilación
ejecutamos el siguiente comando:
2)
MODO MANUALINUX
ffmpeg-5.1.6-scripts.tar.gz
$ su
# tar zxvf ffmpeg-5.1.6-scripts.tar.gz
# cd ffmpeg-5.1.6-scripts
# ./Desinstalar_ffmpeg-5.1.6 |
Copia de Seguridad
como root
$ su
# tar zxvf ffmpeg-5.1.6-scripts.tar.gz
# cd ffmpeg-5.1.6-scripts
# ./Respaldar_ffmpeg-5.1.6 |
Restaurar la Copia de
Seguridad
como root
$ su
# cd /var/copibin/restaurar_copias
# ./Restaurar_ffmpeg-5.1.6
|
Variables de entorno a
establecer para poder compilar los paquetes con FFmpeg 5.1
$ export PKG_CONFIG_PATH=/opt/ffmpeg51/lib64/pkgconfig:$PKG_CONFIG_PATH
$ export LDFLAGS+=" -L/opt/ffmpeg51/lib64" |
FFmpeg 4.4.5
Preliminares
1)
Editamos el archivo /etc/ld.so.conf
y añadimos /opt/ffmpeg44/lib64
include ld.so.conf.d/*.conf
/usr/X11R6/lib
/usr/lib
/usr/lib/qt3/lib
/usr/local/lib
/opt/ffmpeg44/lib64
|
2)
En nuestro home,
editamos el archivo .bashrc (si no existe lo creamos)
y añadimos /opt/ffmpeg44/bin a nuestro PATH
export
PATH=/opt/ffmpeg44/bin:$PATH |
Si queremos establecer una variable de entorno global del sistema,
abrimos un editor de texto y añadimos lo descrito
anteriormente,
#!/bin/sh
export
PATH=/opt/ffmpeg44/bin:$PATH
|
Lo guardamos con el nombre variables.sh, y lo instalamos en /etc/profile.d.
$ su -c "install -m755 variables.sh /etc/profile.d"
|
Tenemos que cerrar el emulador de terminal y volverlo a abrir para que
la variable de entorno aplicada sea efectiva. Es conveniente guardar
una copia de este script para posteriores
instalaciones de nuestro sistema, teniendo en cuenta que es el que se
va a utilizar a partir de ahora en todos los manuales de esta web, para
establecer variables de entorno globales, excepto en aquellas que
sólo afectan al usuario, en las que se utilizará el
archivo de configuración personal, ~/.bashrc.
La ventaja de utilizar el directorio /etc/profile.d es que es común a todas las distribuciones y nos evita tener que editar otros archivos del sistema como por ejemplo, /etc/profile.
Instalación
Dependencias
Herramientas
de Compilación
Entre paréntesis la
versión con la que se ha compilado FFmpeg 4.4.5 para la
elaboración de este documento.
* GCC - (14.2.0) o Clang - (19.1.1)
* M4 - (1.4.19)
* Libtool - (2.5.3)
* Make - (4.4.1)
* Automake - (1.17)
* Autoconf - (2.72)
* NASM - (2.16.03)
* Pkg-config - (0.29.2)
* Texinfo - (7.1)
Librerías
de Desarrollo
*
Xorg - (7.7 / xorg-server 21.1.13)
LibX11 - (1.8.10)
LibXext - (1.3.6)
LibXfixes - (6.0.1)
LibXpm - (3.5.17)
* Freetype2 - (2.13.3)
* GnuTLS - (3.8.7.1)
* Imlib2 - (1.12.3)
* Lame - (3.100)
* Libbzip2 - (1.0.8)
* Libogg - (1.3.5)
* Libtheora - (1.1.1)
* Libva - (2.22.0)
* Libvorbis - (1.3.7)
* Libvpx - (1.14.1)
* Libx264 - (0.164.3193)
* Libx265 - (4.0)
* SDL - (2.30.8)
* Xvidcore - (1.3.7)
* Zlib - (1.3.1)
Descarga
ffmpeg-4.4.5.tar.lz
Firma Digital
ffmpeg-4.4.5.tar.lz.asc
Verificar la firma digital del paquete
$ gpg --import manualinux.asc
$ gpg --verify ffmpeg-4.4.5.tar.lz.asc ffmpeg-4.4.5.tar.lz |
Optimizaciones
Optimizaciones adicionales
Optimizaciones adicionales |
GCC |
Graphite
|
$
export {C,CXX}FLAGS+=' -ftree-loop-linear
-floop-strip-mine -floop-block' |
IPA
|
$ export {C,CXX}FLAGS+=' -fipa-pta'
|
Parámetros adicionales
Parámetros adicionales de eliminación de errores específicos en el proceso de compilación |
GCC 14 |
$ export CFLAGS+=' -Wno-incompatible-pointer-types' |
Establecer la ruta de búsqueda de directorios de librerías en sistemas de 64 bits multiarquitectura |
$ export
LDFLAGS+=" -L/usr/lib64 -L/usr/local/lib64 -L/opt/gcc14/lib64" |
Cada usuario tendrá
que establecer la ruta de búsqueda de directorios, en
función de la distribución que utilice. |
Establecer el uso de enlazador dinámico para Mold |
$ export LDFLAGS+=' -fuse-ld=mold' |
Establecer la variable de entorno de uso de compilador para Clang |
$ export CC=clang CXX=clang++ |
Extracción y Configuración
$ tar axvf ffmpeg-4.4.5.tar.lz
$ cd ffmpeg-4.4.5
$ export LDFLAGS+=" -Wl,-rpath,/opt/ffmpeg44/lib64"
$ ./configure
--prefix=/opt/ffmpeg44 --enable-shared --enable-gpl --enable-postproc \
--enable-libmp3lame --enable-libvorbis --enable-libvpx --enable-libx264 \
--enable-libxvid --enable-libtheora --enable-libx265 --enable-gnutls \
--disable-static --progs-suffix=44 --libdir=/opt/ffmpeg44/lib64 |
Explicación de los
comandos
export LDFLAGS+=" -Wl,-rpath,/opt/ffmpeg44/lib64" : Le indicamos a ld que busque primero las librerías contra las que se tienen que
enlazar los binarios ejecutables de FFmpeg 4.4, en /opt/ffmpeg44/lib64,
para evitar que durante la instalación del programa, se enlacen
contra las librerías de la otra versión de FFmpeg, que tengamos instalada en nuestro sistema, y no contra las que estamos instalando.
--prefix=/opt/ffmpeg44 : Instala el programa y las
librerías en el
directorio /opt/ffmpeg44.
--enable-shared : Activa la compilación de las
librerías compartidas.
--enable-gpl
: Necesario para poder activar la compilación de la
librería de postprocesado.
--enable-postproc
: Activa la compilación de la librería de
postprocesado.
--enable-libmp3lame
: Activa el soporte de Lame.
--enable-libvorbis
: Activa el soporte de Vorbis.
--enable-libvpx : Activa el soporte de VP8 mediante la librería, Libvpx.
--enable-libx264 : Activa el soporte de codificación de H.264
mediante x264.
--enable-libxvid
: Activa el soporte de codificación de Xvid
mediante la librería, Libxvidcore.
--enable-libtheora : Activa el soporte de codificación de Theora mediante la librería, Libtheora.
--enable-libx265
: Activa el soporte de codificación HEVC mediante
la librería, Libx265.
--disable-static
: Desactiva la compilación de las librerías estáticas, que no son
necesarias para compilar los programas y librerías que dependan de este
paquete.
--progs-suffix=44 : Añade un sufijo a los binarios ejecutables instalados para poder diferenciarlos de otras versiones de FFmpeg que
tengamos instaladas en nuestro sistema, empezando por la principal
del mismo.
--libdir=/opt/ffmpeg44/lib64 : Instala las librerías en /opt/ffmpeg44/lib64, en sistemas de 64 bits multiarquitectura.
Parámetros de configuración opcionales
--cc="${CC}" --cxx="${CXX}" :
Sincronizamos la variable de entorno de uso de compilador establecida para Clang, con el parámetro específico de configuración del proceso de compilación de FFmpeg. Si utilizamos Clang con Ccache como prefijo, también tendremos que utilizar este parámetro.
Para ver más parámetros de configuración opcionales ejecutar ./configure --help
Compilación
Parámetros de compilación opcionales
Instalación
como root
$ su
# make install
# ldconfig -v
|
Versiones de las librerías de FFmpeg 4.4.5 instaladas
[jose@localhost ~]$ ffmpeg44 -version
ffmpeg version 4.4.5 Copyright (c) 2000-2024 the FFmpeg developers
built with gcc 14.2.0 (GCC)
configuration: --prefix=/opt/ffmpeg44 --enable-shared --enable-gpl
--enable-postproc --enable-libmp3lame --enable-libvorbis
--enable-libvpx --enable-libx264 --enable-libxvid --enable-libtheora
--enable-libx265 --enable-gnutls --disable-static --progs-suffix=44
--libdir=/opt/ffmpeg44/lib64
libavutil 56. 70.100
/ 56. 70.100
libavcodec 58.134.100 /
58.134.100
libavformat 58. 76.100 / 58. 76.100
libavdevice 58. 13.100 / 58. 13.100
libavfilter 7.110.100
/ 7.110.100
libswscale
5. 9.100 / 5. 9.100
libswresample 3. 9.100 /
3. 9.100
libpostproc 55. 9.100 /
55. 9.100
|
Estadísticas de Compilación e Instalación de FFmpeg 4.4.5
Estadísticas de Compilación e Instalación de FFmpeg 4.4.5 |
CPU |
AMD Ryzen 5 5500 |
MHz |
3600 (BoostMax=4457) |
RAM |
32 GB |
Sistema de archivos |
XFS |
Versión del Kernel |
6.11.3-ml SMP PREEMPT_DYNAMIC x86_64 |
Modo de frecuencia de la CPU |
powersave (balance performance) |
Planificador de CPU |
BMQ |
Versión de Glibc |
2.40 |
Enlazador dinámico |
Mold 2.34.0 |
Compilador |
GCC 14.2.0 + Ccache 4.10.2 |
Parámetros de optimización |
-03 -march=znver3 -mtune=znver3 -ftree-loop-linear -floop-strip-mine -floop-block -fipa-pta |
Parámetros de compilación |
V=1 -j12 |
Tiempo de compilación |
1' 34" |
Archivos instalados |
228 |
|
Enlaces simbólicos creados |
16 |
|
Ocupación de espacio en disco |
38,5 MB |
Desinstalación
como root
1)
MODO TRADICIONAL
En el directorio de compilación
ejecutamos el siguiente comando:
2)
MODO MANUALINUX
ffmpeg-4.4.5-scripts.tar.gz
$ su
# tar zxvf ffmpeg-4.4.5-scripts.tar.gz
# cd ffmpeg-4.4.5-scripts
# ./Desinstalar_ffmpeg-4.4.5 |
Copia de Seguridad
como root
$ su
# tar zxvf ffmpeg-4.4.5-scripts.tar.gz
# cd ffmpeg-4.4.5-scripts
# ./Respaldar_ffmpeg-4.4.5 |
Restaurar la Copia de
Seguridad
como root
$ su
# cd /var/copibin/restaurar_copias
# ./Restaurar_ffmpeg-4.4.5
|
Variables de entorno a
establecer para poder compilar los paquetes con FFmpeg 4.4
$ export PKG_CONFIG_PATH=/opt/ffmpeg44/lib64/pkgconfig:$PKG_CONFIG_PATH
$ export LDFLAGS+=" -L/opt/ffmpeg44/lib64" |
Enlaces
http://ffmpeg.org >> La web de FFmpeg.
|