Software lliure per a la creació audiovisual en temps real

Una aplicació per la creació de vídeo en temps real ha de permetre treballar i modificar material audiovisual (imatges, vídeo o àudio) ja sigui reproduint o bé aplicant efectes sobre aquest. Alhora ha de permetre la interacció instantània entre l’aplicació i el món real mitjançant dispositius externs com per exemple un teclat midi, un sensor de moviment o un micròfon.

Existeixen diverses eines lliures per aquesta finalitat. Aquestes eines les podem diferenciar entre aplicacions informàtiques i biblioteques de programes.

Les aplicacions són programes o un conjunt de programes que faciliten a l’usuari obtenir els resultats desitjats de forma ràpida i senzilla. Molts d’ells neixen oferint un conjunt d’instruccions i com a interfície un intèrpret de comandes. A mesura que creixen fan el pas cap a un entron gràfic, més intuitiu i amigable per a la majoria dels usuaris.

Les biblioteques són conjunts organitzats de programes, llestos per a executar o bé de moduls traslladables, juntament amb el directori o índex que permet accedir-hi. Una biblioteca de programes és un simple fitxer amb el codi compilat i dades que es pot incorporar en un altre programa permetent així una programació més modular, més ràpida i més fàcil de modificar.

Sovint les aplicacions utilitzen biblioteques per aprofitar els seus serveis ja implementats i agilitzar la tasca de desenvolupament.

A continuació és mostra un llistat amb algunes de les aplicacions lliures per a la creació audiovisual en temps real:

delvj

delvj

Delvj és una aplicació per a la composició 3D i la mescla algorísmica de vídeo.

Es recolza sobre les següents aplicacions, biblioteques i llenguatges de programació:

  • Puredata Entorn de programació gràfic per al processat d’àudio i vídeo en temps real. Conforma el motor de vídeo de l’aplicació.
  • GTK Entorn per a la creació d’interfícies gràfiques d’usuari basada en les biblioteques Glib, Pango i ATK. La interfície permet a l’usuari enviar ordres al motor de vídeo.
  • Python Llenguatge de programació de propòsit general. Delvj utilitza un script que bàsicament recull les accions succeides a la interfície d’usuari per a processar-les i enviar-les en forma d’ordres al motor de vídeo.
  • OpenGL Especificació estàndard que defineix una API (interfície de programació d’aplicacions) multillenguatge i muliplataforma per produïr gràfics en dues i tres dimensions.
  • PHP Llenguatge de programació de propòsit general extensament utilitzat pel desenvolupament web. Delvj disposa d’una interfície web que permet manejar l’aplicació des d’altres ordinadors.

Intenta utilitzar el millor dels móns del software de mescla de vídeo i OpenGL per obtenir una bona resposta en temps real i resultats visuals impactants.

Entre les seves característiques cal destacar les següents:

  • Composició 3D: activació i desactivació de capes. A cada capa es poden mapejar diferents canals de vídeo i imatge. Existeixen tipus de capes com ara un rectangle senzill, text 3D o objectes animats. Dues capes més permeten controlar paràmetres generals de l’espai on es troben els objectes i de il·luminació. La majoria de capes mantenen controls generals com ara si és visible, si es vol multiplicar l’objecte a la sortida, afegir vibració, opacitat, posicionament o rotació.
  • Objectes geomètrics.
  • Cal3d: permet la inclusió d’objectes cal3d, que és un format per al emmagatzematge de malles 3D, que es poden crear amb eines d’edició lliure com ara Blender.
  • Text 3D: automatització, carga des de fitxers o fonts de dades rss.
  • Mescla: permet aplicar textures i diferents efectes a vídeos, imatges i text.
  • Control de vídeo, imatge i web cam.
  • Grabació de la composició al disc.
  • Streaming: emissió de la composició directament a través d’un servidor Icecast.
  • Control XMMS.
  • Gestió de seqüències de comandes: permet la gravació de l’estat de la composició tant en un instant determinat com en un seguit de manipulacions. Un cop gravada es pot activar per a visualitzar.

Delvj és una aplicació publicada sota la llicència de programari lliure GNU.

freej

freej

Freej és un instrument digital per la manipulació de vídeo en temps real utilitzat en els camps del teatre, la dansa, el veejaying, les visualitzacions mèdiques i la televisió.

Permet filtrar múltiples capes a través de diferents efectes i després mesclar-les juntes. Les entrades que suporten les capes són imatges, vídeos, càmeres web, generadors de partícules, text o animacions flash entre d’altres.

Es pot controlar local o remotament, des de diferents llocs al mateix temps, utilitzant la seva interfície de consola.

Es recolza sobre les següents aplicacions, biblioteques i llenguatges de programació:

  • Simple Directmedia Layer (SDL) Biblioteca multimèdia designada per proporcionar accés a baix nivell a l’àudio, teclat, ratolí, joystick, acceleració 3D per hardware via OpenGL i l’emmagatzemament temporal d’imatges (framebuffer) per vídeo 2D.
  • S-Lang Llenguatge interpretat lliurat amb el seu intèrpret i alhora una biblioteca que permet desenvolupar software sofisticat independentment de la plataforma. La biblioteca proporciona facilitats pel control de la pantalla, mapes de teclat, terminals d’entrada i sortida de baix nivell, entre d’altres.
  • FreeType2 Proporciona una API simple i fàcil d’usar per produir sortides de fonts amb alta qualitat.
  • FFMpeg Solució completa per reproduir, enregistrar i convertir audio i vídeo. Està format per diferents components: ordres de comandes pel tractament de vídeo (ffmpeg), un servidor HTTP per enviar multimèdia (ffserver), un reproductor basat en SDL i les biblioteques de ffmpeg (ffplay), una biblioteca que conté tots els codificadors i descodificadors d’àudio i vídeo de FFMpeg (libavcodec) i una altra biblioteca pel tractament de formats usuals (libavformat).
  • libpng Biblioteca que permet el treball amb imatges de format PNG (Portable Network Graphics) que juntament amb la biblioteca per compressió de dades sense pèrdues Zlib en resulta una abstracció per treballar amb aquest format lliure i extensible.
  • video4linux Biblioteca que facilita la captura i el control del hardware de vídeo en temps real.
  • XFree86 Implementació del sistema de finestres X Window System o un dispositiu anomenta framebuffer, que és un bloc de memòria que sostè un frame (dades de pixels d’una imatge) per a la visualització. Aquests aporten una API independent del hardware per als dispositius gràfics de manera que les aplicacions poden manipular directament el frame.
  • NASM (Netwide Assembler) Ensamblador per a la família 80×86 que te per objectiu fomentar la portabilitat i la modularitat. Permet generar fitxers objecte, i en alguns casos directament executables per a diferents sistemes operatius utilitzant la mateixa sintàxis.
  • MMX (Multimedia Extensions) Conjunt de 57 instruccions multimèdia contruides en determinats microprocessadors com els de la família Intel o d’altres compatibles. Els microprocessadors que suporten MMX poden manejar moltes operacions multimèdia comuns del processat digital de senyal (DSP).

El lleguatge de programació utilitzat en el seu desenvolupament és C/C++ respectant els estàndards POSIX i evitant l’ús d’algunes funcions abançades de C++.

Entre les seves característiques cal destacar les següents:

  • Mescla de múltiples capes: permet sobreposar, enmascarar, transformar i filtrar diferents capes sobre la pantalla. El nombre de capes que es poden mesclar és il·limitat.
  • Streaming: permet produïr un stream Ogg/Theora/Vorbis per la difusió de la composició en servidors Icecast.
  • Controlable per la xarxa via ssh, podent operar des de diferents origens al mateix instant.
  • Scripts procedimentals de vídeo: Freej és un motor de vídeo asíncron (a base de senyals determinats) que pot ser implementat amb javascript per a controlar les seves operacions a través d’un seguit de comandes i accions. Per això conté una interfície de programació d’aplicacions (API) que aporta un conjunt de funcions de propòsit general per implementar noves característiques.

Freej és una aplicació publicada sota la llicència de programari lliure GNU.

bomb

bomb

Bomb és un instrument multimèdia que produeix gràfics orgànics animats en resposta al teclat, l’àudio o sobre si mateix de forma automàtica.

Es recolza sobre les següents aplicacions, biblioteques i llenguatges de programació:

  • X Window System o svgalib (Linux SuperVGA Graphics Library) Biblioteca de gràfics de baix nivell per a Linux, que complementa la mancança d’aquest suport en el propi llenguatge C.
  • libpng pel treball amb imatges de format PNG.
  • JPEG pel tractament d’imatges JPEG (Joint Photographic Experts Group).
  • libTIFF pel tractament d’imatges TIFF (Tag Image File Format).
  • Pthread API que ofereix una implementació estàndard que implementa múltiples fils en execució dins d’un procés d’usuari tradicional.
  • libm Biblioteca de funcions aritmètiques i matemàtiques.
  • GNU C Library Biblioteca estàndard de C.
  • libz Biblioteca de compresió Zlib que ofereix funcions de comprimir i descomprimir dins la memòria, incloent comprovacions de dades.
  • libdl Linkador dinàmic generalment utilitzat per a la portabilitat d’aplicacions.
  • libaudiofile API per accedir a gran varietat de formats d’àudio.
  • ALSA (Advanced Linux Sound) biblioteca d’àudio.
  • Enlightened Sound Daemon Aplicació per mesclar diferents fluxes d’àudio alhora i reproduir-los en un sol dispositiu.
  • libXext ínterfície de client del sistema de les X.
  • libXau i libXdmcp pel control d’autoritzacions de les X.

 

El lleguatge de programació utilitzat en el seu desenvolupament és C.

Entre les seves característiques cal destacar les següents:

  • Amplia col·lecció de paràmetres (textures, capes o efectes) per decidir com varia la imatge sobre la pantalla.
  • Possibilitat de modificar els paràmetres amb el teclat.
  • Control de colors i manipulació d’imatges.
  • Selector d’entrada d’àudio.
  • Possibilitat de crear scripts amb el llenguatge Lisp permetent tant la composició com la improvització.

Effectv és una aplicació publicada sota GPL, la llicència de programari lliure GNU.

effectv

effectv

Effectv és una aplicació que proporciona un ampli conjunt d’efectes visuals per aplicar als vídeos en temps real.

Es recolza sobre les següents aplicacions, biblioteques i llenguatges de programació:

  • BTTV Driver de linux per a determinades targetes capturadores de televisió.
  • Simple Directmedia Layer (SDL)
  • NASM
  • vloopback Driver de video4linux capacitat per generar pipes amb vídeo. D’aquesta manera s’escriu part de flux de vídeo en un dispositiu a l’espera que un altre el llegeixi.
  • DirectFB Biblioteca que ofereix el màxim rendiment en l’acceleració de hardware amb el mínim ús de recursos.
  • FusionSound Biblioteca pel control de múltiples fuxes d’àudio.
  • Altres: Pthread, GNU C Library, ALSA, libdel, libvga, libm.

El llenguatge utilitzat pel seu desenvolupament és C.

Entre les seves característiques cal destacar les següents:

  • Determinar el mòde de vídeo (ntsc, pal, secam…).
  • Determinar la freqüència de sintonització de televisió.
  • Ús de memòria de vídeo quan és possible.
  • Hablitar el mòde de doble buffer.
  • Determinar la resolució de la imatge.
  • Redireccionar el flux del vídeo a amb d’altres aplicacions.
  • Gran nombre d’efectes.

Effectv és una aplicació publicada sota la llicència de programari lliure GNU.

fluxus

És una eina experimental pel procés de modelat i animació, amb un gran suport de textures, pròpietats bàsiques materials i bon acoblament amb el hardware.

Es recolza sobre les següents aplicacions, biblioteques i llenguatges de programació:

  • OpenGL
  • ODE (Open Dynamics Engine) motor físic per simulacions en temps real de cossos dinàmics rígids.
  • PLT Scheme Llenguatgede programació Scheme dissenyat per l’ensenyament de ciències computacionals.
  • FFTW
  • JACK Servidor d’audio de baixa latència que permet interconnectar diferents aplicacions en un dispositiu d’àudio i enter elles.
  • libsndfile Biblioteca per la lectura i escriptura de fitxers d’àudio.
  • Lightweight OSC implementation API pel protocol OSC.
  • GLEW (The OpenGL Extension Wrangler Library)
  • SCons (Software Construction Tool) Programari pel desenvolupament de software.

El llenguatge utilitzat pel seu desenvolupament és C++.

Fluxus llegeix dades d’àudio en directe o bé missatges de xarxa OSC (Open Sound Control) que poden ser utilitzades com a font de dades per a realitzacions visuals o instal·lacions multimèdia. La lectura de teclat i ratolí permet el desenvolupament de videojocs. També conté un motor físic per simulacions en temps real de cossos dinàmics rígids (ODE).

Permet l’edició de scripts mentre aquests s’estàn executant. Aquesta és una via ràpida per la experimentació o l’aprenentatge de gràfics i animacions.

Fluxus és programari lliure sota els termes de la llicència GPL.

gephex

 gephex

És un software modular dirigit als videojockeys. Les fonts per als visuals poden ser fitxers o una càmera de vídeo. Aquestes es poden manipular mitjançant filtres o mescles. Cada manipulació té diferents paràmetres que poden ser controlats per genadors de senyal i dispositius d’entrada com ara un joystick, una tarja de so o dispositius midi.

Es recolza sobre les següents aplicacions, biblioteques i llenguatges de programació:

  • Qt Biblioteca gràfica per la creació d’interfícies d’usuari i aplicacions.
  • libpng pel treball amb imatges de format PNG.
  • SDL
  • openGL
  • avifile Implementació d’utilitats multimèdia.
  • LibMPEG3 Biblioteca que decodifica diferents estàndards MPEG en un format ideat per la edició i la reproducció.
  • AA-lib Biblioteca artística de l’ascii utilitzada per renderitzar els frames a ascii.
  • ALSA
  • video4linux
  • FFMpeg
  • vloopback
  • frei0r API minimalista pel tractament de vídeo i efectes.

El llenguatge utilitzat pel seu desenvolupament és C++.

Entre les seves característiques cal destacar les següents:

  • Interfície gràfica d’usuari.
  • Fàcilment extensible amb plugins.
  • Arquitectura client servidor.
  • Suport als format de vídeo (ffmpeg, avifile, video for windows, directshow).
  • Inclou gran part dels efectes de EffecTV.
  • Suport per a web cams i targes de televisió (v4l o directshow).
  • Suport per als dispositius d’entrada midi o joystick.
  • Suport per l’àudio (captura de la targeta de so, mescla, sítesis d’àudio, sortida…).

Gephex és programari lliure, permetent la seva utilització, distribució i modificació publicat sota els termes de la llicència GPL.

hasciiCam

hasciicam.png

hasciicam permet incrustar videoascii en viu sobre web. Pren el vídeo d’un dispositiu de captura (com ara una càmera de vídeo, o una webcam) i el renderitza a ascii, ajustant el format de la sortida en una pàgina HTML amb un tag de refresc o en una finestra anomenada live o simplement en un fitxer de text.

Es recolza sobre les següents aplicacions, biblioteques i llenguatges de programació:

El llenguatge utilitzat pel seu desenvolupament és C++.

hasciicam és programari lliure, permetent la seva utilització, distribució i modificació publicat sota els termes de la llicència GPL.

puredata

puredata

Posa a l’abast de l’usuari una capa d’aplicació on es representen objectes modulars, que són abstraccions de funcions o procediments per a múltiples propòsits.

Mitjançant la interconnexió d’aquests objectes l’usuari pot construir les seves pròpies aplicacions.

Les aplicacions construides amb puredata tenen en comú el tractament en temps real del flux de dades que tingui lloc en qualsevol dels dispositius del sistema.

El control dels dispositius d’enrada i sortida de dades (midi, teclat, sensors, xarxa,…) permeten a puredata la interacció amb el món real, resultant una eina molt utilitzada en els camps de les instal·lacions multimèdia, directes audiovisuals i qualsevol aspecte que demani respostes inmediates.

puredata ofereix un conjunt ampli d’objectes. Cada objecte té un funcionalitat que respon a una acció, podent rebre dades, produïnt una o més sortides. A més es disposa d’un patch d’ajuda per a cada objecte on s’especifica la seva funcionalitat, sovint a mòde d’exemple. A partir dels patchs d’ajuda es poden crear aplicacions de forma senzilla interconnectant objectes entre ells.

Donada una aplicació de pd (patx) la podem modificar de manera senzilla, reorganitzant interconnexions, afegint o eliminant objectes i definint missatges. Per tant no cal ser un expert en la sintàxis de cap tipus de codi sinó tractar els objectes de puredata, coneixe’ls i comunicar-los.

Existeixen diferents tipus de colaboracions de desenvolupadors que afegeixen un gran nombre d’objectes de pd, compartint-los i a l’abast de tothom. Són objectes externs a puredata però confeccionats a l’estil dels pròpis de pd i que mantenen un aspecte gràfic comú. Aquest fet fa que pd creixi en funcionalitats freqüentment adaptan-se a noves aplicacions.

Molts d’aquests objectes es disposen en foma de llibreria, que és un conjunt d’un o més objectes.

Hi ha un gran nombre de llibreries que faciliten el tractament de determinades dades, com per exemple:

  • OSC - Open Sound Control.
  • GEM - Graphics Environment for Multimedia.
  • PDP i PiDiP - Col·lecció d’externals pel treball multimèdia.
  • PMPD - Physical Modeling for puredata.
  • HID - Human Interface Device.
  • ANN -Artificial Neural Networks.

Es recolza sobre les següents aplicacions, biblioteques i llenguatges de programació:

  • X Window System Sistema de finesters per mostrar mapes de bits. Gestiona l’entron de finestres controlant teclat i ratolí.
  • TK Interfície gràfica d’usuari que permet la elaboració d’aplicacions d’escriptori (també GUI) d’alt i baix nivell.
  • GNU C Library
  • JACK
  • Pthread
  • AA-lib
  • S-Lang
  • librt Petita biblioteca per la programacció general (llistes, taules hash, sockets…).
  • Altres: Ncurses, libm, libX11, General Purpose Mouse, libdl, libXau, libXdmcp, ALSA, libdel.

El llenguatge utilitzat pel seu desenvolupament és C.

Puredata es lliura sota la llicència GPL de GNU.

 

A part d’aplicacions amb interfície d’usuari com les anomenades fins ara, també trobem llenguatges de programació i bibliotques que engloben la majoria de utilitats per a treballar amb imatges, animacions i interaccions. Tant processing com openFrameworks en són dos exemples novells.

processing

processing

És un llenguatge i un entorn de programació creat per a l’ensenyament dels fonaments de computació en el context visual i alhora proporcionar una eina de producció.

Processing és recolza sobre altres projectes lliures:

  • OROMatcher eina pel tractament d’expressions regulars.
  • Jikes compilador que tradueix el codi font de fitxers Java que segueixen les especificacions del llenguatge al conjunt d’instruccions codificades a bytes i al format binari definit a les especificacions de la màquina virtual de Java.
  • jEdit Syntax Package paquet per l’ajuda en l’aspecte del codi font (color de tipus, marcat de claudators,…).
  • com.ice.jni.registry

El llenguatge utilitzat pel seu desenvolupament és Java.

Com tot llenguatge de programació, processing defineix constants, estructures de flux i de control, tipus de dades primitius i un determinat nombre de funcions pel tractament de dades. Alhora ofereix serveis pel tractament de:

  • Models en dues dimensions, corbes, atributs i vèrtexs.
  • Entrades: ratolí, teclat, fitxer, temps i data.
  • Sortides: àrea de text, imatge, fitxer.
  • Transformacions: rotació, escalat, translació…
  • Colors: alfa, saturació, RGB…
  • Imatges: filtres, treball amb pixels…
  • Tipografies: tractament de fonts.
  • Evaluacions matemàtiques: màxim, valor absolut…

Per extendre processing més enllà del tractament de gràfics i imatges s’ofereixen un munt de biblioteques que permeten el treball amb àudio, vídeo i la comunicació amb altres dispositius.

Processing és un entorn publicat com a programari lliure sota la llicència GPL.

openFrameworks

És una biblioteca de C++ dissenyada per a realitzar treballs creatius que suggereix un entorn de treball simple i intuitiu per la experimentació. La biblioteca es diposa per a treballar d’adhesiu de propòsits generals, formant-se per un conjunt de biblioteques d’ús més comú de forma ordenada.

Aquestes biblioteques són les següents:

  • OpenGL
  • rtAudio API per l’entrada i la sortida d’àudio en temps real.
  • FreeType Biblioteca pel tractament de fonts.
  • freeImage Biblioteca per tractar formats gràfics com ara PNG, BMP, JPEG, TIFF i altres.
  • QuickTime API que proporciona funcions C per la creació i reproducció multimèdia de pel·lícules QuickTime.

El conjunt de classes i mètodes que composen la API fan que la codificació de nous projectes sigui senzilla, reutilitzable i extensible.

Anima a tercers a desenvolupar afegits en forma de biblioteques mantenint la biblioteca principal de openFrameworks escueta i manejable. De la biblioteca de visió per computador openCV desenvolupada originalment per Intel en sorgeix el primer afegit.

El llenguatge utilitzat pel seu desenvolupament és C++.

 

Conclusions

Cadascuna de les eines anteriors han estat dissenyades per objectius determinats, però mantenen en comú el treball amb material audiovisual en temps real i amb mecanismes d’interacció. El ventall de possibilitats s’adequa als diferents tipus d’usuaris amb o sense nocions de programació. De la mateixa manera la diversitat de metodologies i tecnologies emprades pel seu desenvolupament també responen a la majoria de les necessitats dels usuaris, com ara el rendiment, la qualitat i la fiabilitat.

La creació de les primeres eines lliures pel tractament de vídeo en temps real és relativament proper. Al tractar-se de programari lliure, en el seu desenvolupament constant incorporen noves funcionalitats, sovint com a resposta a tecnologies recents per la seva experimentació i ús.

Un altre factor important i distintiu entre les eines és el suport ofert als usuaris, amb una documentació elaborada i l’existènca de comunitats d’usuaris actives on poder retroalimentar conexiements i experiències. El temps de vida influeix amb força sobre aquests factors doncs les de més antiguitat compten amb un major nombre d’usuaris, desenvolupadors i col·laboradors.

D’entre totes puredata marca la diferència amb la programació gràfica que permet crear aplicacions en temps real fàcilment, sense escriure línies de codi d’un llenguatge determinat. Tot i que als seus inicis es va desenvolupar pel tractament de senyals i dades per la creació musical, puredata ha incorporat diferents eines per l’experimentació visual i per la connexió amb dispositius hardware. La seva estructura com a llenguatge de programació facilita la interoperabilitat i connexió dels diferents objectes que ofereix. La reutilització de les aplicacions o part d’elles es fa evident amb el concepte d’asbtracció. Una abtracció és un patx de pd que permet rebre dades o senyals, processar-les i, si cal, retornar-ne d’altres.

Actualment puredata compta amb diferents comunitats d’usuaris. També es realitzen tallers arreu del món i, fins i tot, entra a formar part de l’ensenyament multimèdia d’algunes universitats.

Publica un comentari

Has de ser ha entrat enviar un comentari.