Manualinux
http://www.nvu.com http://www.gimp.org InicioPresentaciónActualizacionesManualesDescargasNoticiasAgradecimientoEnlaces

Entornos GráficosAplicaciones

DesarrolloEmuladoresInternetJuegosMultimediaSistema

GráficosSonidoVídeo

TDT en GNU/LinuxUtilidades de Vídeo - DivFix++

Utilidades de Vídeo - Aegisub




Utilidades de Vídeo - Aegisub




Copyright

Copyright © José Luis Lara Carrascal  2021-2023   http://manualinux.es



Sumario

Introducción
Instalación
Iniciamos Aegisub
Paquetes binarios
Enlaces




Introducción  

Aegisub
es un editor avanzado de creación y modificación de subtítulos de vídeo. Utiliza el formato ASS como tipo de archivo predefinido para guardar los subtítulos, pero puede trabajar también con el formato más utilizado hoy en día, SubRip (.srt), además de soportar una gran variedad de formatos de exportación e importación, gracias a su potente motor de automatización basado en Lua. La última versión del programa data del año 2014, y en el año 2020 el proyecto se quedó sin dominio y su desarrollo queda relegado a los repositorios ubicados en GitHub. Gracias al esfuerzo de colaboradores de la distribución Arch Linux, existe una versión actualizada a los tiempos que corren en lo que concierne al sistema de compilación (meson), que será la tratada en este manual. También he modificado el paquete de código fuente para que los enlaces al sitio web del programa y la documentación, apunten a la web archivada del mismo.



Instalación  

Dependencias

Herramientas de Compilación


Entre paréntesis la versión con la que se ha compilado Aegisub para la elaboración de este documento.

* GCC - (13.2.0)
* CMake - (3.27.4)
* Git - (2.42.0)
* Meson - (1.2.1)
* Ninja - (1.11.1)
* Gettext - (0.22)
* Pkg-config - (0.29.2)

Librerías de Desarrollo

* Xorg - (7.7 / xorg-server 21.1.8)
* ALSA - (1.2.10)
* Boost - (1.83.0)
* FFMS2 - (2.40)
* Fftw3 - (3.3.10)
* Fontconfig - (2.14.2)
* Hunspell - (1.7.2)
* ICU - (69.1)
* Libass - (0.17.1)
* OpenAL - (1.23.1)
* PortAudio - (V19_20210406)
* PulseAudio - (16.1)
* Uchardet - (0.0.8)
* WxGTK (Unicode) - (3.2.2.1)
* Zlib - (1.3)



Descarga

aegisub-3.2.2-git-22092022.tar.xz  |  aegisub_boost181.patch

Firma Digital  Clave pública PGP

aegisub-3.2.2-git-22092022.tar.xz.asc 

Verificar la firma digital del paquete

$ gpg --import manualinux.asc
$ gpg --verify aegisub-3.2.2-git-22092022.tar.xz.asc aegisub-3.2.2-git-22092022.tar.xz

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:
* 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='.
Valores CPU
Genéricos
Intel
AMD

Optimizaciones adicionales

Optimizaciones adicionales
Graphite
$ export {C,CXX}FLAGS+=' -ftree-loop-linear -floop-strip-mine -floop-block'
IPA
$ export {C,CXX}FLAGS+=' -fipa-pta'
LTO
$ export AR=gcc-ar RANLIB=gcc-ranlib NM=gcc-nm
$ export {C,CXX}FLAGS+=' -fuse-linker-plugin -flto=auto'
En versiones inferiores a GCC 10, sustituir auto por el número de núcleos que tenga nuestro procesador. Si sólo tiene uno, utilizar el parámetro -flto

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/gcc13/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'

Extracción y Configuración  Bloc de Notas Información general sobre el uso de los comandos

$ tar Jxvf aegisub-3.2.2-git-22092022.tar.xz
$ cd aegisub-3.2.2-git-22092022
$ patch -Np1 -i ../aegisub_boost181.patch
$ sed -i '327d' meson.build
$ export PATH=/opt/wxgtk32/bin:$PATH
$ find . -name '*.wrap' -type f | xargs sed -i 's:\[provides\]:\[provide\]:'
meson build --prefix=/usr --buildtype=release --strip
$ ln -sf luajit_rolling.h subprojects/luajit/src/luajit.h

Explicación de los comandos

patch -Np1 -i ../aegisub_boost181.patch : Aplicamos este parche de la distribución Void Linux para poder compilar el soporte de la versión 1.81 de Boost, hasta la 1.83.

sed -i '327d meson.build : Con este comando, complementamos la aplicación del parche anterior, para que no se compilen los tests del paquete, que dan error con dicha versión de Boost.

export PATH=/opt/wxgtk32/bin:$PATH : Establecemos la variable de entorno correspondiente, en el caso, de que tengamos instaladas dos versiones de WxGTK en directorios diferentes. En mi caso particular, la versión 3.2.2.1 la tengo instalada en /opt/wxgtk32, respetando la versión anterior (2.8.12), requerida por otras aplicaciones para su ejecución.

find . -name '*.wrap' -type f | xargs sed -i 's:\[provides\]:\[provide\]:' : Soluciona el siguiente mensaje de error con Meson 1.2:

meson.build:1:0: ERROR: Unexpected "[provides]" section, did you mean "[provide]"?

--prefix=/usr : Instala el programa en el directorio principal /usr.

--buildtype=release : Compila la versión optimizada del paquete, ya que Meson compila por defecto los paquetes con los parámetros -O2 -g

--strip : Elimina los símbolos no necesarios para su ejecución de los binarios ejecutables correspondientes.

ln -sf luajit_rolling.h subprojects/luajit/src/luajit.h : Soluciona el siguiente mensaje de error, cuando se compila la versión interna de LuaJit:

../subprojects/luajit/src/host/buildvm.c:31:10: error fatal: luajit.h: No existe el fichero o el directorio
   31 | #include "luajit.h"

Compilación

$ ninja -C build

Parámetros de compilación opcionales

-v : 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 -c "ninja -C build install"

Borrar las locales adicionales instaladas con la utilidad BleachBit

# bleachbit -c system.localizations

Estadísticas de Compilación e Instalación de Aegisub

Estadísticas de Compilación e Instalación de Aegisub
CPU AMD Ryzen 5 5500
MHz 3593.250 (BoostMax=4457.000)
RAM 32 GB
Tarjeta gráfica AMD Radeon RX 580 2048SP
Controlador de gráficos AMDGPU 23.0.0
Sistema de archivos XFS
Versión del Kernel 6.5.2-ml SMP PREEMPT_DYNAMIC x86_64
Modo de frecuencia de la CPU powersave (balance performance)
Versión de Glibc 2.38
Enlazador dinámico Mold 2.1.0
Compilador GCC 13.2.0 + Ccache 4.8.3
Parámetros de optimización -03 -march=znver3 -mtune=znver3 -ftree-loop-linear -floop-strip-mine -floop-block -fipa-pta -fuse-linker-plugin -flto=auto
Parámetros de compilación -v -j12
Tiempo de compilación 58"
Archivos instalados 37
Mostrar/Ocultar la lista de archivos instalados
Ocupación de espacio en disco 6,7 MB

Consumo inicial de CPU y RAM de Aegisub

Consumo inicial de CPU y RAM de Aegisub
Programa
CPU RAM
aegisub 0 % 235,9 MB
Para medir el consumo de CPU se utiliza el programa top, y para medir el consumo de RAM se utiliza el script de Python, ps_mem.py, creado por Pádraig Brady, que podemos encontrar en este enlace.

Directorio de configuración personal

~/.aegisub Es el directorio de configuración personal de Aegisub en nuestro home.

Desinstalación como root

1) MODO TRADICIONAL

En el directorio de compilación ejecutamos el siguiente comando:

$ su -c "rake uninstall"

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.

aegisub-3.2.2-git-22092022-scripts.tar.gz

$ su
# tar zxvf aegisub-3.2.2-git-22092022-scripts.tar.gz
# cd aegisub-3.2.2-git-22092022-scripts
# ./Desinstalar_aegisub-3.2.2-git-22092022

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 aegisub-3.2.2-git-22092022-scripts.tar.gz
# cd aegisub-3.2.2-git-22092022-scripts
# ./Respaldar_aegisub-3.2.2-git-22092022

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_aegisub-3.2.2-git-22092022



Iniciamos Aegisub  

Sólo nos queda teclear en una terminal o en un lanzador el comando aegisub, y la interfaz del programa aparecerá en la pantalla.


Captura - Aegisub - 1


Captura - Aegisub - 2


Captura - Aegisub - 3




Enlaces  


http://www.aegisub.org >> La web archivada de Aegisub.

https://github.com/Aegisub/Aegisub >> Enlace al proyecto original del programa en GitHub.

https://github.com/TypesettingTools/Aegisub >> Enlace al proyecto derivado tratado en este manual, ubicado también en GitHub.

https://github.com/wangqr/Aegisub >> Otro proyecto derivado del programa, también hospedado en GitHub.


Foro Galería Blog


Actualizado el 12-09-2023

Utilidades de Vídeo - Aegisub

TDT en GNU/LinuxUtilidades de Vídeo - DivFix++