Sep 16

RTMP source to HLS (HTTP Live Streaming) Apple

Reading time: 2 – 3 minutes

I just solved a very specific problem and I have to write some notes here to remember the solution. Given a RTMP source we have to stream the content to Apple devices like iPad, iPhone and iPod because RTMP couldn’t be played using Safari browser.

If we need to play streaming on Apple devices the best solution is convert it to HLS and publish generated files using HTTP server.

To solve this issue I use rtmpdump and vlc. Firstly rtmpdump gets video stream from source. Secondly the stream is sent to vlc and finally vlc transcodes de video and audio and outputs small .ts files and one .m3u8 index file.

The command is something like this:

rtmpdump -v -r "$RTMP" | sudo -u xymon vlc -I dummy fd://0 vlc://quit --sout="#transcode{width=320,height=240,fps=25,vcodec=h264,vb=256,venc=x264{aud,profile=baseline,level=30,keyint=30,ref=1,nocabac},acodec=mp3,ab=96,audio-sync,deinterlace,channels=2,samplerate=44100}:std{access=livehttp{seglen=10,delsegs=true,numsegs=5,index=$M3U8,index-url=$TS_URL},mux=ts{use-key-frames},dst=$TSF}"

Variables descriptions are:

RTMP=rtmp://example.tld/path/stream_id
WD=/local_path
TS=live-####.ts
TSF=$WD/$TS
TS_URL=http://example.tld/path/$TS
M3U8=$WD/live.m3u8

Then create an HTML file, for example live.html, with a reference to .m3u8 file, the relevant code of the HTML file is like this:

<video width="320" height="240"><source src="http://example.tld/path/live.m3u8" /></video>

A simple code to public files via HTTP:

python -c "import SimpleHTTPServer;SimpleHTTPServer.test()"

Then we only need to open Safary browser in Apple device and set the proper URL, in our case:

http://example.tld/path/live.html

IMPORTANT NOTE: the audio output have to be with two channels and a sample rate of 44KHz in other cases the audio fails.

Apr 19

Podcast 1×04: problema coreutils, miroTV, animoto i Qik

Reading time: 2 – 2 minutes

La temàtica d’aquest podcast, al teniu resumida amb els enllaços:

  • quickpkg – generar paquets pre-compilats amb Gentoo des de paquets ja instal·lats
  • miroTV – programa per organitzar i miarar videocasts
  • animoto – montatges de fotografies i música, espectacular
  • Qik – video streaming des del mòbil i via internet

Un petit video que he fet amb animoto perquè ús feu una idea del que pot arribar a fer:

Perquè quedi ben clara la idea que intenta exportar Qik, adjunto una imatge/esquema de com funciona la idea:

qik schema

El podcast:

Jul 31

Sistema d’audio domèstic (MPD player)

Reading time: 5 – 8 minutes

La meva intenció no és fer un altre article súper tècnic amb fitxers de configuració i detalls molt tècnics. Malgrat es tracta de la descripció d’un projecte tècnic, no considero que tingui cap punt de dificultat, per tant, em centraré més en l’aspecte descriptiu i filosofic del que es preten aconseguir.

Doncs bé la idea és montar-me una mica millor sistema per escoltar música a casa, tan a l’estudi (on hi ha els PCs) com a la resta de la casa. Per això he fet un petit esquema del que he montat aquest cap de setmana.

mpd-schema.png

La idea és aprofitar que el servidor té targeta de so i disposa del repositori principal de música. El reproductor que li he instal·lat és una mica especial, s’anomena MPD (music player daemon). Bàsicament la gràcia que té és que funciona com a dimoni i que permet rebre comandes remotes a través d’un socket TCP. Per tant, podré controlar remotament el que esta sonant a través de programes client.

A més gràcies a jinzora un aplicatiu via web, puc consultar tota la música disponible amb tota la informació de la música del repositori i a través de la interficie puc enviar noves playlist o música sota demanada contra el servidor MPD. Realment és un aplicatiu impressionant, molt recomenable. Si no es disposa d’un servidor MPD també pot enviar la música a través d’streaming fins al player de l’usuari i si l’ample de banda no és massa bo permet fer transcoding en temps real.

Bé doncs, només amb això ja puc posar música des de qualsevol dispositiu que em permeti accedir a la interficie web del jinzora. Perquè si el programes en mode jukebox permet llençar la música directament contra l’MPD. A més aquestes cues de música a sonar no les manté jinzora sinó l’MPD així doncs quan connectem amb un client d’mpd podrem veure la canço que sona, la cua, fer pausa, parar la música, tocar el volum del servidor, etc.

A la sortida d’audio de la targeta de so del servidor hi he connectat la minicadena i quan vull a la sortida de la minicadena connecto el transmissor d’audio de Rimax, el que vaig comprar el gener de l’any passat (funciona per UHF a 800MHz). Així els altaveus (receptors) de la planta de baix també es posen a reproduir la música de l’estudi.

Ara aprofitant que tinc cobertura wifi per tota la casa, he configurat al nokia 770 un programa que es diu glurp, també disponible per PC. Es tracta d’un client d’MPD. És molt lleuger i ràpid, cal pensar que només fa de frontend i permet tenir les nostres llistes de reproducció al servidor, recuperar-les quan volguem i crear llistes noves de forma molt senzilla. Aquest client el tinc instal·lat també al portàtil, va molt bé.

Així doncs, amb quatre eines i una estona de paciència configurant i fent proves. Ja tinc el sistema d’audio més o menys decent. Obviament és molt millorable. De fet, la idea que porto al cap seria algo semblant a això:

Bàsicament es tracta d’ampliar les zones on hi ha altaveus sense fils, a més es tracta de col·locar un parell de mixers si pot ser digitals tan a l’estudi com al menjador. Per tal de poder controlar el volum de tot plegat de forma centralitzada. També m’agradaria començar a montar d’una vegada el media center del menjador. Amb el MPD amb un mirall del repositori montat a través d’openAFS i sincronitzat a través de wifi.

A més el mixer de l’estudi hauria de permetre capturar les sortides d’audio dels dos PCs, poden desviar el so cap a la minicadena o cap als headphones, així si la Daphne es posa a estudiar xinès no em molesta mentre jo escolto música o simplement treballo sense música. He vist que hi ha mixers d’aquests que s’anomenen matrix però no són controlats via soft, sinó a través d’una consola tipus comandament a distància amb una pantalleta. A veure si en trobo algún que m’ho permeti fer via soft.

Un tema pendent en el que encara no m’he posat és en suportar streaming des d’internet. De fet, no és res de l’altre món, però estava donant-li voltes en quines són les funcions que em podrien interessar en aquest sistema i la veritat no trobo quines, ja que últimament no escolto gran cosa per internet.

A més també li donava voltes a fer que els servidors MPD agafessin la música d’un servidor d’streaming intern (shoutcast) i així ambdos reproductors treurien el mateix so i tan a l’estudi com a baix se sentiria el mateix. Però tampoc ho he trobat massa important i per això no m’hi he liat.

Ara em queda pendent un altre article, que seria un article complementari a aquest, on us parlaré de productes comercials i altres ‘invents’ que permeten extendre aquesta idea que explico aquí. Però per avui ja he escrit prou… me’n vaig a treballar.