Mostrando las entradas con la etiqueta Aegisub. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Aegisub. Mostrar todas las entradas

lunes, 6 de diciembre de 2010

Muffin Translator, mi proyecto de vacaciones

Como proyecto de vacaciones, me propuse hacer un programita al que le tenía ganas hace tiempo: Muffin Translator.
Como sabrán, tengo amigos en un fansub de anime. Ellos para traducir, deben bajar los capítulos del anime a traducir, de algún fansub en ingles, para leer los subtítulos, traducirlos y escribirlos en un archivo de texto plano. Esto conlleva tener que pasar entre ventanas con las teclas Alt+Tab, cosa engorrosa viendo que son cerca de 500 lineas de dialogo por capítulos.
Aquí nace la idea de Muffin: tener todo en una misma ventana, es decir, video, texto, y diccionarios online.

Pero, ¿Con qué hacerlo?, el lenguaje de programación es importante y más porque, aun que soy usuario de Linux, la mayoría de los que usarían el programa usan Windows. Tampoco puedo desarrollarlo solo para Windows, porque esa mayoría no son el 100% jejejejejeje
Pensé en usar Vala+Mx: Vala es el lenguaje de programación del proyecto Gnome muy parecido a C y muy integrado a GTK... no quise usar GTK por lo maluco que es compilar cosas para Windows. Mx es un sistema de widgets basados en Clutter (una biblioteca para manejar datos OpenGL de forma más abstracta y fácil), peeeeeero... tiene el problema de la casi nula documentación, y que nadie la ha usado lo suficiente como para tener ejemplos concretos desde Vala.
La otra opción fue C#+Mono: Mono es multiplataforma también, pero, tuve el inconveniente del video... no supe qué usar, y no supe hacer las interfaces gráficas tampoco, y como la documentación era demasiado "serious business", no me ayudaba mucho.
Por ultimo, consideré Python+wxWidgets: Python es un lenguaje multiplataforma, super-popular en todas las distribuciones Linux, y que en Windows es fácil crear ejecutables (py2exe). Además es un lenguaje muy fácil y bastante practico. wxWidgets, es una biblioteca para GUIs (al igual que GTK, o Qt4...), escrito en C++, que su filosofía es escribir el mismo código para crear la interfaz gráfica, y que al usarlo en cualquier sistema operativo, se vea igual. Así, en Windows, usa las bibliotecas nativas de Windows para crear la GUI. En Linux, usa GTK, en Mac, usaba Carbon, pero ya se está portando a Cocoa. Yo la conocía hace mucho tiempo (Aegisub usa esta biblioteca), por lo que se lo que se puede hacer con ella, además la documentación es muy buena, y en español, aunque no es mucho, hay varios ejemplos de como usarse. Por otro lado, viene integrado con muchas funcionalidades, que sumadas a las propias de Python, lo hicieron el candidato perfecto.

Lo siguiente, ya habiendo seleccionado a Python, fue definir el tema del video. Si conocen sobre anime en ingles, quizás se habrán dado cuenta que los gringos prefieren publicar mucho de su anime en el formato contenedor Matroska (MKV), ese es un problema, pues el MKV permite múltiples canales de subtítulos, audio, etc... bastante flexible, pero no muy sencillo par mi.
¿Cómo hacer entonces para reproducir video en Muffin?. Primero lo primero, qué alternativa conocía en Python: PyGame o PyGlet, ambas son para crear videojuegos, pero no sabía como integrarlas... de hecho, parecía imposible. La otra opción era usar pyffmpeg, un warper de ffmpeg (un conjunto de codecs multipletaforma), funcionó... pero excesivamente lento, la razón es que está diseñado para manejar fotograma a fotograma el video... algo que es pesado computacionalmente, y que para Muffin no era muy interesante.
Por casualidad dí con MplayerCtrl, un warper para usar el popular Mplayer en... oh sorpresa: wxPython.

Ahora mismo ando programándolo, he usado wxGlade para la interfaz gráfica, y voy a usar Mercurial como control de versiones y CodeGoogle como hosting.
Pronto les daré más bocadillos ;D

sábado, 17 de abril de 2010

Mirada al estado del arte de los subtítulos en Linux

Para poner un titulo tan complicado a este articulo, la verdad es que no lo es tanto.

El "estado del arte" es un termino usado para hablar de como va algo, o para hablar de lo ultimo que ha sucedido en torno a algún tema (se usa comúnmente en el ámbito académico e investigativo).
De este tema ya había hablado antes, y en verdad, de lo que escribí de ese entonces a lo que hay hoy, la cosa ha cambiado bastante, y para bien de todos.

En estos 6 meses ha pasado de todo: LibASS va por su versión 0.9.9 (pronto a ser estable del todo), y gracias a esto, los desarrolladores del Aegisub también publicaron su primer versión con soporte tanto para Windows, como para Linux.
A todo esto, sumarle que, aunque con algo de demora, y yo poniendo parte de mi esfuerzo en ello, el Avidemux, un programa muy parecido al archi-conocido VirtualDub de Windows, pero multiplataforma (Win, *nix y Mac), ahora tiene soporte para pegar subtítulos, ya que mandé la actualización pertinente del plugin. De hecho, el video del post anterior a este, es una clara muestra del potencial adquirido en Linux para mostrar subtítulos.

Mi intención (que llevo ya como un año con ella jajajaja!!), ha sido la de hacer un tutorial mostrando todo lo posible que se puede hacer sin importar si estamos en Windows o Linux, obviamente dándole prioridad a Linux, que igual, en Windows hace años existen herramientas y por montón, cosa que en Linux, apenas le estamos viendo el auge. Quizás esta vez si lo haga, ya teniendo todas las herramientas a mano.

Al grano
Siendo puntuales (y leyendo lo que hay en la pagina del LibASS), las diferencias entre el VSFilter, y el LibASS son:
  • Aun no se tiene soporte para texto al revés , como el hebreo o el árabe (Supongo se integrará en futuras versiones, aunque es algo que a nosotros los hispano hablantes no nos interese mucho...)
  • Algunos fonts (letras) pueden verse raras. Esto, ya que LibASS usa FreeType, y este le hace sensible a las "imperfecciones pequeñas" del diseño del font (es culpa de los creadores de las fuentes, por no adherirse al estándar TrueType o PostScript).
  • El ajuste inteligente de las lineas no se comporta exactamente igual que en VSFilter (el tag que gestiona esto es el \q, uno de los grandes desconocidos que hay). Una prueba de esto, es el primer cartel que sale en el video del post anterior, se va adaptando para que todos los caracteres salgan en la pantalla. En Win, por defecto esto no pasa así.
  • El LibASS muestra mejor los bordes al escalar un subtitulo. No como en Win, que en ocasiones el cambio era dramáticamente visible.
  • No contiene hacks considerados "rara vez utilizados".
Como se nota, las diferencias no son muchas, ni muy profundas, lo que a mi criterio, convierte el LibASS en un directo competidor al VSFilter ya que... la mayor parte del tiempo, el LibASS es un 50% más rápido.
¿Y esto que importa?, la mayoría de los consumidores de subtítulos en nuestro contexto, consiguen los subtítulos ya pegados al video (hardsubs), sin embargo, la situación en países anglosajones es diferente, donde los Matroska, con los softsubs (subtítulos no pegados al video) acaparan ahora casi todo el contenido.

No me estañaría que dentro de no mucho, el libASS se vuelva popular en Windows también (ignoro si habrán inconvenientes técnicos).

Aun queda camino por delante... 
El Avidemux funciona a la perfección pegando subtítulos, en la rama 2.5.x r6127+, pero hasta que no se publique la versión 2.5.3, donde vendrá la actualización, solo los gomosos que se aventuren a compilar o a bajar las versiones beta ya compiladas, y no el publico en general, van a poder pegar subtítulos desde Linux o Mac.
El Aegisub funciona muy bien, inclusive hay un ppa para los usuarios de Ubuntu y, en distros como Arch, ya se consiguen en los repositorios (aunque la compilación es bastante fácil también).
Y en el famoso reproductor multiplataforma VLC, por su parte, no se cuanto habrá que esperar para que se monten en el barco, ya que mirando en git del proyecto me encuentro con que tienen una versión modificada del LibASS (si se han dado cuenta, muchos avisos del programa parecen ser subtítulos... es porque usan la librería LibASS modificada para esto), así que, hay que esperar que la persona encargada se haga cargo de su paquete -.-

Hasta aquí el estado del arte del LibASS.
-----------------------------------
Sinceramente, espero que esta información le llegue a la mayor cantidad de personas, si quieren publiquenla en otros lados (Foros, sus propios blogs, etc...), la licencia bajo la que publico los artículos del blog lo permite, eso sí, me reconocen el trabajo a mi ^^

PD: adjunto el comando para adicionar el ppa del Aegisub en Ubuntu:
$ sudo add-apt-repository ppa:riccetn/aegisub

martes, 13 de abril de 2010

Subtitulos pegados en Avidemux, por medio de LibASS




Luego de una ardua labor de 2 días (leer como funcionan los plugins en avidemux y eso...), y de unas 4 compilaciones fallidas, logré por fin codificar en Avidemux, todos los tags oficiales del Advance SubStation alpha, usando el LibASS.

Para poder pegarlos, es necesario tener el Avidemux a una revisión mayor a la 6127, de la rama 2.5.x.


Hoy es un día épico ^^

domingo, 1 de noviembre de 2009

Aegisub y libass en linux

Una de las cosas que me gusta hacer, pero que lamentablemente por cuestiones de estudio tuve que dejar, es fansubear anime. Especialmente editar (también se le conoce como Typesetting), que consiste en poner efectos a los letreros traducidos, de forma que sean acordes al original y que sea a agradable a la vista.

Un poco de historia.
En un principio, el mundo de los subtítulos se basaba únicamente en traducir el contenido y mostrarlo, no importaba mucho los colores (todos eran amarillos o blancos, con borde negro o.o), o el estilo de letra, y ni era importante que los letreros se vieren bien.
Todo esto cambio con la llegada de un formato de subtítulos llamado Substation Alpha, que introdujo un lenguaje de scripting que permitía introducir tags(etiquetas), que dieron como como resultado el florecimiento de subtítulos más elaborados, y en algunos casos, mucho mejores que el simple texto plano (no en todos, aveces los subs dan miedo o.oU)

ok, muy genial todo este rollo, y listo. Pero había un pequeño problema: para hacer estos subtítulos, era necesario hacerlo a mano, con un engorroso procedimiento de "prueba y error". Así fue como se empezaron a crear diferentes programas que permitieron hacer uso del formato, sin tantas complicaciones. Entre uno de los más conocidos, estuvo "Medusa", que prácticamente ayudó a extender el formato en su etapa inicial.

Como pasa con todas las cosas en esta vida, las necesidades del publico fueron cambiado, dando lugar a que el formato se siguiera desarrollado. Así fue como nació Advance Substation Alpha, el siguiente gran paso a la expansión de los subtítulos con estilo, y como dicen por ahí "camarón que se duerme, se lo lleva la corriente"... el Medusa se quedó dormido, y le salió un competidor llamado Aegisub (dando alusión a Aegis, el escudo de la mitología griega), un proyecto OpenSource, bajo licencia BSD que se enfatizó en ser una herramienta de fácil manejo para las tareas más agotadoras y que no deberían por qué sérlo.

Aegisub en el mundo Linux.
Su versión para Windows es ampliamente difundida, y aunque el programa es múltiplataforma, su versión para Linux y Mac no lo han sido tanto, en gran medida, en Mac, por su no muy buena estabilidad, y en Linux (y Mac también), por la MALA compatibilidad que había entre el VSFilter, y LibASS. En especial porque LibASS no soportaba todas las etiquetas que si soporta VSFilter.

Eso cambió hace poco, con la llegada de LibASS 0.9.8, a la cual ya le falta poco para ser del todo compatible con las etiquetas que hay (información sobre las etiquetas aquí).

"¡¡yo también quiero!!"
Lo primero es conseguir el Aegisub en su versión para Linux.
Deberían fijarse si en los repositorios de su distribución está (según he leído, algunas lo tienen, aunque la gran mayoría no). En caso que nó, pueden revisar aquí, si están los binarios al final de la pagina. Y en caso que nó, deberían compilar (si usas Ubuntu, sige leyendo más adelante).

La compilación es algo que no describiré aquí... al menos no por ahora. Los archivos fuente los consiguen por estas paginas:
  • http://devel.aegisub.org/wiki/Build
  • http://devel.aegisub.org/wiki/Build/Unix
  • http://devel.aegisub.org/wiki/Build/Deps
Aegisub en Ubuntu
Aprovechando que me acabo de instalar Ubuntu 9.10 karmic koala, y que tengo ya todo actualizado, encontré por aquí, unos binarios para ubuntu de Aegisub 2.1.8-dev, agradecimientos a Gardadon por ese aporte :D

lamentablemente, la version de LibASS que trae por defecto es es la 0.9.6, la cual aun estaba muy quedada en cuanto a nuevos tags (no permitía hacer dibujos con el \p1 por poner un ejemplo), por esto, y para aprovechar las nuevas características que trae el LibASS 0.9.8, hay que compilar éste.

Compilando LibASS

Primero lo primero: las dependencias.
LibASS necesita tener el freetype2 (encargado de manejar el "dibujo de caracteres" en pantalla, o en palabras más normales, el que deja que podamos leer en Linux xDD ), así que vamos a descargar eso, más lo normal que deberiamos tener para una compilacion (compilador, y checkinstall, para hacerlos un .deb)

sudo aptitude install libfreetype6-dev build-essential checkinstall

Luego descargamos de la pagina principal del proyecto en GoogleCode el .tar.bz2 , y lo descomprimimos donde queramos.
Luego abrimos la terminal, y navegamos por las carpetas (usando el comando cd nombre_de_la_carpeta , recuerden que distingue entre mayúsculas y minúsculas)

luego dentro de la carpeta del libass, escribimos uno a uno estas 3 lineas:

./configure

make

sudo checkinstall --fstrans=no --install=yes --pakdir "$HOME/Escritorio" --pkgname=libass3 --pkgversion "0.9.8" --backup=no --deldoc=yes --deldesc=yes --delspec=yes --gzman --default

El primero mira las dependencias y configura la compilación. El segundo, compila, y el tersero es un comando que llama al checkinstall, y le dá todos los parámetros para que nos les pregunte nada, y al final lo instala o.o
Tengan en cuenta, que el nombre del paquete es libass3, esto es, porque así se llama dentro de ubuntu al libass 0.9.6, así, para que se "actualice", debemos ponerle el mismo nombre, de lo contrario la versión de los repositorios seguirá, y será como si no hubiéramos hecho nada.

cuando termine, quedará el .deb en el escritorio. el programa además ya queda instalado y... cool xDDD

--------------------------------------
a.. y el aegisub queda listo también, renderizando los subtítulos como en el VSFilter.
Los únicos que no he visto que funcionen son \clip, \iclip. de resto, los que he probado van bien.

No olviden comentar!!!
Saludos!!!