Tuesday, January 17, 2012

Extragerea stream-urilor flash online


Dupa cum probabil ca stiti, cea mai noua tehnica de streaming a posturilor TV live este facuta cu ajutorul formatului flash video (.flv) prin intermediul playerelor online bazate pe proptotipul produs de Adobe. Formatul este versatil si calitatea este buna si foarte buna, chiar si in conditiile unui bitrate redus. Cu toate acestea, marele inconvenient este tipul de servere securizate dedicate acestui tip de transmisii (protocolul RTMP, RTMPE si RTMPT). Toate solicita un player online dedicat, majoritatea solicita si un port dedicat (1935), precum si citeva informatii furnizate de pagina pe care este publicat stream-ul, in ideea descurajarii celor care vor sa „importe” sau sa redirectioneze acest stream catre alte site-uri ori playere.

Aplicatia initial conceputa pentru Linux, Rtmpdump este poate cel mai bun program pentru extragerea tuturor informatiilor necesare redirectionarii stream-ului .flv catre un alt player sau capturii acestui stream.

Aplicatia consta intr-un pachet de cinci utilitare: rtmpdump.exe, rtmpExplorer.exe, rtmpsrv.exe, rtmpsuck.exe si rtmpgw.exe, precum si un container librtmp.dll. Rtmpdump este programul de baza, in timp ce RtmpExplorer este doar un „GUI”, o interfata pentru extragerea adreselor si parametrilor necesari reproducerii streamului video.

Odata creat directorul rtmpdump pe harddisc si copiate aplicatiile in el, avem doua alternative pentru a opera cu programul. Fie il lansam scriind adresa stream-ului in casuta „Run” a meniului de start (sub forma C:/rtmpdump/rtmpdump.exe –r „adresa stream”), fie prin crearea unui fisier text amplasat in acelasi director si salvat cu extensia .bat.

1.Aflarea adreselor

Lansarea aplicatiei RtmpExplorer (o interfata pentru browserul Internet Explorer) lanseaza, de asemenea, si utilitarul Rtmpsrv, cel care in momentul in care vizitam o adresa web va indica adresa stream-ului continut de acea pagina.

Rtmpsrv este facut sa functioneze pe portul 1935. Daca acesta nu va este deschis din firewall, aplicatia nu va indica nimic. De regula, insa, portul este deschis by default prin utilizarea browserului.



Un exemplu de adresa de stream extrasa prin intermediul Rtmpsrv. Tastam url-ul in address bar-ul aplicatiei RtmpExplorer, dupa care asteptam incarcarea paginii. Daca playerul nu porneste instant, dam click pe butonul „Play”.


Daca programul Rtmpsrv nu reuseste sa afiseze adresa (unele site-uri blocheaza anumite informatii suplimentare sa treaca prin portul 1935), il inchidem si deschidem programul Rtmpsuck. Acesta functioneaza la fel, in conjunctie cu RtmpExplorer, numai ca reuseste sa treaca de restrictiile impuse de majoritatea site-urilor in afisarea parametrilor specifici stream-ului.


Atentie, comanda default a programelor Rtmpsrv si Rtmpsuck este una de inregistrare a streamului (singurele cazuri in care acesta nu va fi inregistrat sint acelea de eroare in „handshaking”, adica in protocolul de conectare la stream). Sa nu va surprinda daca stream-ul va incepe sa „curga” pe calculatoarele voastre, command box-ul aratind o succesiune de biti care se acumuleaza, asa ca in imaginea urmatoare.


Daca nu va intereseaza decit adresa in sine, nu inregistrarea stream-ului, trebuiesc facute urmatoarele:

a)      in cazul Rtmpsrv, pur si simplu inchideti casuta. Recording-ul se va opri, iar linia care contine adresa si parametrii de comanda va fi inregistrata intr-un fisier command.bat – aflat in acelasi director cu aplicatia rtmpdump.


b)      In cazul Rtmpsuck e necesar sa copiati parametrii inainte de a inchide command box-ul, pentru ca ei nu se salveaza nicaieri. De asemenea, linia de comanda pentru inregistrarea ori retransmisia stream-ului va trebui alcatuita parametru cu parametru.

Marcajul textului:


Copierea textului:


Inserarea textului intr-un editor de text:


O linie de comanda Rtmpdump arata astfel:

rtmpdump -r "rtmpe://fms15.mediadirect.ro:1935/live2/antena3?id=8342556" -a "live2/antena3?id=8342556" -f "WIN 11,1,102,55" -W "http://static1.mediadirect.ro/player-preload/swf/antena3_new_1037/player.swf?data=DAsQDA8FWi0LBgM=&url=CgAQPBMINhsLF1odDRQ=&app=FlUZRg0NHxdXTBUDEQEHAFc=&str=DAsQDA8FNkE6Dxsa" -p "http://www.antena3.ro/live.php" -C O:1 -C O:0 -y "antena_3_low" -o antena_3_low.flv

Linia de mai sus este destinata unui fisier care urmeaza a fi inregistrat. Semnificatia comenzilor este urmatoarea:

-r – link-ul rtmp
-a – numele aplicatiei care se conecteaza la serverul rtmp
-w – playerul flash
-p – adresa site-ului pe care se afla streamul
-C – o indicatie privind tipul conectarii
-y – denumirea streamului
-o – titlul sub care stream-ul .flv va fi salvat pe harddisc

2. Reproducerea stream-ului in VLC e partea cea mai usoara. Ea necesita inlocuirea ultimei comenzi (-o) cu o alta, care directioneaza stream-ul catre player.

Comanda va arata astfel:

rtmpdump -r "rtmpe://fms15.mediadirect.ro:1935/live2/antena3?id=8342556" -a "live2/antena3?id=8342556" -f "WIN 11,1,102,55" -W "http://static1.mediadirect.ro/player-preload/swf/antena3_new_1037/player.swf?data=DAsQDA8FWi0LBgM=&url=CgAQPBMINhsLF1odDRQ=&app=FlUZRg0NHxdXTBUDEQEHAFc=&str=DAsQDA8FNkE6Dxsa" -p "http://www.antena3.ro/live.php" -C O:1 -C O:0 -y "antena_3_low" --quiet | "C:/program files/videolan/vlc/vlc.exe" –

-quiet(q) – nu desemneaza un fisier „output”


Odata lansat player-ul, lucrurile vor arata astfel:


Spor la download/vizionare.

2 comments:

  1. ar fi de zis pentru cei ce folosesc windows, ca rtmpdump 2.4 nu functioneaza, merge foarte bine in schimb versiunea 2.5 (2.4 se intrerupea dupa jumatate de minut)

    am avut probleme cu VLC, asa ca am folosit ffplay.exe (din pachetul ffmpeg) care merge foarte bine

    ReplyDelete
    Replies
    1. Stiti cumva de unde pot downloada executabilele pentru versinea 2.5 ?

      Delete