Sep 11

OBS Studio – cómo usar los perfiles, escenas y fuentes

Reading time: < 1 minute

Cada vez uso más OBS Studio y hace unos meses me decidí a sacarle todo el jugo a la herramienta. Pues bien, para ello me tuve que ir al manual para entender cual era la finalidad de los perfiles, las escenas y las fuentes. Para que no se me olvide registré este vídeo:

Jan 30

USB 2.0 VGA from DealExtreme

Reading time: 1 – 2 minutes

Several months ago I bought a video graphics adapter for USB 2.0 port. It’s compatible with Linux, Mac and Windows but for a while I’ve only used it with Windows where it works as a extended screen for my HDMI main display. It works very good with 1920×1080 pixels resolution and it can play videos fast enough using a standalone video player or HTML5 video streaming from the internet.

The chipset used by this product is DISPLAYLINK DL-165 with DVI, HDMI and VGA adapters. It is powered by USB port with 5V DC and 450mA about 2,25W of consumption; but after installing the display driver I lost 2GB of RAM, which in my case it isn’t a problem but sometimes it could be a handicap.

USB 2.0 VGA

USB 2.0 VGA

If you are interested in this product I bought it in DealExtreme webpage, the product page is here and costs 34,28€ with free shipping.

Sep 20

How to get MP3 file from a WebM video

Reading time: < 1 minute Another title for this post could be: "Getting audio from video clips". Because you could do it with MP4 (Mpeg4), WebM, Mov, FLV, etc. We are going to use ffmpeg to that:

ffmpeg -i input_file.webm -ab 128k -ar 44100 out_file.mp3

The meaning of the parameters:

  • ab: the audio bitrate in bps
  • ar: the audio sample rate in hz

And if you have a directory with a lot of files to convert you could use:

find . -name "*.webm" -print0 |while read -d $'\0' file; do ffmpeg -i "$file" -ab 128k -ar 44100 -y "${file%.webm}.mp3";done

Pay attention to “find” and “while read” commands combinations because we want to support files with spaces.

I hope this is as useful for you as for me.

Aug 23

Entenent els frames I, P i B

Reading time: 2 – 4 minutes

Al sentir parlar de formats de video, codecs, DivX, MPEG4, etc. sovint surten a la conversa termes com ara els I-frame, P-frame i B-frame. Cansat de que em soni a xinès he decidit fer-me un petit resum de què és tot plegat, sempre des del punt de vista d’algú que en sap ben poc d’aquests temes.

Podem dividir els ‘frames’ de video en 3 tipus:

  • I-Frame: també anomenat keyframe. No té cap frame de referència i pot ser decodificat per si mateix. Podem pensar que és algo semblant a un JPEG.
  • P-Frame: El contingut del mateix és dedueix d’un frame previ de tipus I o P, és impossible decodificar-lo sense mirar aquesta referència.
  • B-Frame: per decodificar-los cal mirar els frames anteriors i següents de tipus I i P.

Aquest últim tipus de frames són interessant per dues raons:

  • Són fàcils de predir
  • No impacten en la qualitat dels frames següents

Degut a que els B-frames depenen del passat i el futur, llavors el decodificador li calen frames I-P del passat i el futur per poder decodificar el frame B. Això ens porta als conceptes PTS/DTS.

  • PTS Presentation Time Stamp: també podem entendre’l com una forma de saber el número de frame, ordre en que es poden veure els frames decodificats.
  • DTS Decoder Time Stamp: ordre en que es processen els frames per ser decodificats.

Un exemple, per entendre-ho millor:

  • Suposem que això és un petit video: I-0 B-1 B-2 P-3
  • L’ordre DTS seria: I-0 P-3 B-1 B-2

Per tal de simplificar les coses el video s’enmagatzema en l’ordre DTS.

El problema

Arribat en aquest punt podeu imaginar-vos el problema que suposa mostrar un video en ordre, ja que el decodificador ha d’anar composant els frames per mostrar-los am és d’inserir frames on no n’hi han per mostrar el frame que toca.

DIVX (i Xvid)

Aquests famosos codecs per tal de d’atacar aquest problema fan servir un petit truc. La idea seria usar una variant dels frames PB i empaqueten diversos frames en un. Això fa que les aplicacions es pensin que només hi ha un frame i el codec oculta la resta.

Per exemple, si tenim un fitxer que te empaquetat el següent:

In (0 3 1 2) - - - ...

el codec haurà de treure això:

Out 0 1 2 3 ...

El codec posa frames de tipus ‘null’ en el lloc on hi haurien d’haver els frames que no té pel fet de tenir-los empaquetats en un frame. Els codecs ja saben que quan reben un frame null han de descartar-los.

Des del punt de vista del codificador, és important fixar-nos que no s’introdueix un delay corresponent als frames nulls. En un fitxer AVI no hi ha cap relació entre el PTS/DTS guardada enlloc per tal d’informar al decoder quan aquest ha de reproduir.

Nov 23

Càlcul dels mm de l’òptica d’una càmara

Reading time: < 1 minute Fórmula molt simple però útil, serveix per saber quina és la mida d'una òptica d'una càmara en funció de la distància i l'espai horitzontal a registrar:

( Distància x 4’8 ) / Horitzontal = mm Òptica
S’assumeix que la distància i l’hortizontal venen donades en metres

Realment útil si penseu en sistemes de videovigilància o d’altres similars.

Mar 14

Istanbul una aplicació per capturar screencast

Reading time: 1 – 2 minutes

screencast.png

Abans d’anar al CeBIT vaig capturar uns screencast per tal de fer una demostració de les aplicacions de movilpoint. Doncs bé, malgrat l’edició la va fer el Law amb software propietari la captura la vaig fer Istanbul. Comentar només que les sessions que es capturen queden com videos Ogg Vorbis així doncs, també podem capturar audio al mateix temps que la pantalla. Malgrat això els videos que varem fer a movilpoint estan subtitulats en anglès i no tenen so.

Potser el que més m’agrada és la capacitat d’escollir una aplicació i gravar tot el que aquesta aplicació fa. També és interessant la capacitat de poder marcar una zona de la pantalla on es capturarà. Comentar que si treballeu amb més d’una pantalla el video també pot ser de les pantalles que tingueu. Obviament després és una mica engorrós de mirar. Això si, si teniu més d’un workspace i decidiu canviar mentre esteu gravant el screencast no es mantindrà en l’espai de treball original.

Apr 27

Beagle++ el beagle de sempre però amb capacitat semàntica

Reading time: 1 – 2 minutes

És curiós però fa unes setmanes li donava voltes al cap si valia o no la pena seguir tenint el Beagle consumint recursos a la meva màquina. No perquè no sigui un bon indexador, sinó perquè no tinc la costum d’usar-lo i no el faig servir mai. Així doncs una de dues o l’acabo treient o m’acostumo a usar-lo. La qüestió és que tot navegant fa uns dies vaig trobar el Beagle++ aquest projecte encara en una fase força inicial afegeix capacitats semàntiques al Beagle de sempre. Què carai vol dir això doncs, que per exemple si busquem Spain no només ens donarà resultats de documents relacionats amb la paraula sinó amb paraules derivades també, per exemple, València, Madrid, etc.

Com que el millor exemple sempre és veure-ho funcionar:

Apr 20

Resolucions en pixels de PC i Video

Reading time: < 1 minute

Sovint quan s’expresa la resolució d’un dispositiu es fa en sigles i ens quedem igual, perquè no sabem el seu equivalenten pixels aquí va una petita llista recordatori.

Resolucions de PC:

  • QXGA 2048 x 1536
  • WUXGA 1920 x 1200
  • UXGA 1600 x 1200
  • WSXGA 1600 x 1024 o 1600 x 900
  • SXGA 1280 x 1024
  • WXGA 1280 x 768 o 1366 x 768
  • XGA 1024 x 768
  • SVGA 800 x 600
  • VGA 640 x 480

Resolucions de video:

  • 1080i/p 1920 x 1080
  • 720i/p 1280 x 720
  • 480i/p 720 x 480
  • PAL 720 x 576
  • NTSC 720 x 480
  • CIF (NTSC) 352 x 240
  • CIF (PAL) 352 x 288
Sep 22

Neuros OSD – free your media

Reading time: 3 – 5 minutes

Un altre producte a l’estil del Chumby:

The Neuros OSD was created to connect user’s computer and entertainment worlds. Among many other things, this would allow users to watch video downloads and digital photo slideshows on TVs and listen to MP3s through their stereos. Previously the choices for doing this have been restricted to two approaches: all-in-one PC-based media centers and limited, closed “embedded” devices in various forms: PVRs, digital media adapters and streaming devices.

neuros_osd.jpg

The OSD also enables users to take their video on the go and watch video on any device with non-DRM, standard MPEG-4 files. The OSD supports virtually all devices with data conversion or requiring extensive set-up. There are no subscription fees associated with the use of the OSD.

esquema.png

The OSD enables all of the above by combining many of the attributes of PCs and embedded devices in a single device.

Like a PC, the OSD is open, expandable, flexible and standard and uses software that is upgradeable and relentlessly enhanced. By taking these attributes and applying them to an “embedded” consumer electronics device, the OSD can evolve and grow to meet all the expanding needs of the digital consumer in a device that, unlike a PC, is small, inexpensive, silent, and designed specifically for the job.

The Neuros OSD runs Linux with a USB host, built-in networking, and IR blaster. It has a dual core processor from TI that was designed specifically for multi-media applications and can encode and playback full DVD resolution MPEG-4 and play virtually all forms of digital audio and pictures. It connects directly to different accessories like iPods, USB webcameras, external DVD drives, and external hard drives. It also records onto memory cards for easy transfer to PSPs, smartphones, and other non-USB portables.

In short, the Neuros OSD contains the essence of what consumers want in a device to bridge their computer, home A/V systems, and portables without the baggage of a legacy PC system.

  • MPEG4 encoding and decoding (as many formats and wrappers as possible) – D1 (720×480)resolution at 30 fps
  • MPEG2 encoding and decoding
  • Ethernet
  • Linux (2.6 Kernel)
  • Dual Core Processor ARM9/TI DSP
  • SD/CF/MS card slots
  • USB host
  • IR Blaster
  • IR remote

The front of the device has the following I/O:

OSD_front.jpg
  • IR receiver
  • USB Host
  • Multi-card (SD/MS/MS PRO/MS DUO/MMC)
  • Compact Flash (including microdrive)
  • Dual color LED (green and Red)

The back of the device has the following I/O:

OSD_back.jpg
  • Power
  • Serial connector (to conrol tuner boxes and connection to PC for developer debugging)
  • IR Blaster (for controlling tuner boxes)
  • S-Video input
  • Ethernet 10/100
  • Composite Audio and Video input and output (RCA connector cables included)

NOTA aquest post esta escrit a basa de copy/paste del wiki de Neuros OSD.

A linuxdevices hi ha un bon review sobre el Nueros OSD, es pot ampliar detalls des d’allà.

Jul 03

Grabar video-tutorials

Reading time: 3 – 5 minutes

Malgrat hi ha un molt bon programa amb una GUI basada en GTK per linux per capturar sessions i grabar veu a les sessions. El wink. O sigui, amb el que podem construir video-tutorials on expliquem com fer qualsevol cosa. Amb Gentoo no sé perquè no em funcionava a més la versió 1.5 que és la última disponible per linux no suporta grabació de veu. Així que m’he decantat per probar el vnc2swf que junt amb el pyvnc2swf (no inclòs al portage de linux) permet grabar sessions d’VNC i grabar fitxers d’audio al mateix temps. Esta prou bé l’script amb Python automatitza molt les coses. Obviament es tracta d’una aplicació basada en CLI i per tant, no té interficie gràfica i jo diria que no permet editar els arxius un cop grabats. No sé si el flash (.swf) es pot editar un cop grabat l’audio i el video. Però em sembla que és l’única manera d’editar un video-tutorial un cop grabat.

Perquè ens fem una idea del que fa l’script de Python és llençar el vnc2swf i al mateix temps podem invocar el arecord (graba .wav via ALSA). Així doncs quan a través de la mini-interfice gràfica que té el pyvnc2swf premem el botó d’stop es graba un fitxer .wav i un .swf amb el nostre video i l’audio per separat. Llavors el que fem amb el lame és convertir el .wav a .mp3 i després unim l’.mp3 amb el .swf de forma que quedin un sol arxiu .swf, el propi script ens ha creat també una pàgina .html des d’on es crida l’objecte de flash.

Com que hi ha força arxius i paràmetres a usar a continuació adjunto un petit cookbook que explica com fer-ho:

# Llencem el servidor d'Xvnc
vncserver -geometry 800x600 :10
# Modifiquem el fitxer ~/.vnc/xstartup perquè es llenci el KDE amb l'escriptori del servidor Xvnc
cat xstartup
#!/bin/sh
startkde &
# Llencem el pyvnc2swf amb la seva mini-GUI per llençar i parar les grabacions
vnc2swf.py -o out.swf -r 5 -S "arecord -r 22050 voice.wav" localhost:10
# Finalment llencem el client d'vnc per controlar la sessió que volem grabar
vncviewer -depth 8 -compresslevel 9 -quality 9 :10

Els paràmetres que li passem al vnc2swf.py són per indicar el fitxer de sortida (-o), després li diem que grabi 5 fotogrames cada segon (-r 5) després llencem en swap el arecord prenent mostres a 22KHz i grabant la seva sortida a voice.wav. Finalment li diem que la sessió a la que s’ha de connectar en mode de només lectura és a localhost:10, o sigui, el port 5910.

Un cop parem la sessió es generarà un fitxer out.html des d’on es cridarà l’objecte de flash out.swf aquest arxiu no té incrustat el so grabat a voice.wav per adjuntar-lo hem de fer:

# Convertim a .mp3 el fitxer amb l'audio voice.wav
lame voice.wav
# Adjunt l'audio del fitxer voice.wav.mp3 al fitxer out.swf i la sortida ens quedarà a out2.swf
edit.py -o out2.swf -a voice.wav.mp3 out.swf

A l’executar l’edit.py també es crearà el fitxer out2.html que crida l’objecte de flash out2.swf amb l’audio inclòs. Perquè us feu una idea de la sortida us adjunto aquest screenshot:

pyvnc2swf.png