martes, octubre 18, 2011

Bajar un video Flash manualmente

Fuente: txipi:blog

Aunque normalmente con DownloadHelper es suficiente para bajar los videos flash que nos interese, en algunos casos este plugin de firefox no funciona y entonces hay que hacerlo manualmente, que siempre es mas divertido aunque mas complicado.
Como veis en el articulo del blog de txipi esta toda la base, aunque como siempre pasa, cada caso es diferente. Este video en concreto, era un favor para una amiga, así que me puse a intentar bajarlo siguiendo los pasos de txipi:

Con tcpdump te descargas el trafico, es interesante ponerlo justo antes de que salga el video:

# tcpdump -i eth0 -p -s 0 -w captura.pcap

En Debian, para usar el tcpdump, que pone la tarjeta de red en modo promiscuo, necesitas ser root (por eso el simbolo # ) para los demas pasos se pueden realizar como usuario normal.
El video se transmite mediante el protocolo rtmp, buscamos las lineas donde aparezca este termino, de esta manera:

$ strings captura.pcap | grep rtmp > captura.txt

Si vemos el archivo captura.txt, nos encontramos con esto:

*rtmp://extondemand.livestream.com/ondemand
GET/9.gif?a=S~b=f27fecf43761f1037~c=458DF5551F5F4C1FEAC678BF94DFFF66A6D9ED2F~d=F8793DA9741B8605E97CB52A6AFEB8B2F3A6ABE6~e=1~f=R~g=0~h=1.2~i=1.1~k=59D80C36D70ECC555A8E863D7F130051739EF19E~pu=http%3A//www.canal4aljarafe.es/video.php%3Fid%3Dpla_6e58511d-9662-4064-b2e9-12efcc135a42~ag=www.canal4aljarafe.es~al=Linux%202.6.32-5-amd64~ax=O~ac=mp4%3Atrans/dv15/mogulus-user-files/chcanalcuatroaljarafe/2011/10/05/9139cbd2-c0da-4e7b-a130-426a7a9401c1.mp4~dx=0.736~en=canalcuatroaljarafe~v=138~w=749~aa=extondemand.livestream.com~ab=ondemand~ad=1935~ae=rtmp~pu=http%3A//www.canal4aljarafe.es/video.php%3Fid%3Dpla_6e58511d-9662-4064-b2e9-12efcc135a42~ag=www.canal4aljarafe.es~ai=Mozilla/5.0%20%28X11%3B%20U%3B%20Linux%20x86_64%3B%20es-ES%3B%20rv%3A1.9.1.16%29%20Gecko/20110929%20Iceweasel/3.5.16%20%28like%20Firefox/3.5.16%29~aj=11,0,1,60~ak=Flash_PlugIn~al=Linux%202.6.32-5-amd64~am=Flash_PlugIn:F~an=278~ao=413~ap=691~aq=1573880~as=25.0000~at=Netscape~au=1425*652~av=512*288~aw=rtmp%3A//extondemand.livestream.com/ondemand/mp4%3Atrans/dv15/mogulus-user-files/chcanalcuatroaljarafe/2011/10/05/9139cbd2-c0da-4e7b-a130-426a7a9401c1.mp4~ax=O~ay=csma-1.9.13:csmaLoader-1.4.3~az=1.2~ba=900000~bb=212.106.219.62 HTTP/1.1 1GET /9.gif?a=P~b=f27fecf43761f1037~c=458DF5551F5F4C1FEAC678BF94DFFF66A6D9ED2F~d=F8793DA9741B8605E97CB52A6AFEB8B2F3A6ABE6~e=2~f=R~g=0~h=1.2~i=1.1~k=59D80C36D70ECC555A8E863D7F130051739EF19E~pu=http%3A//www.canal4aljarafe.es/video.php%3Fid%3Dpla_6e58511d-9662-4064-b2e9-12efcc135a42~ag=www.canal4aljarafe.es~al=Linux%202.6.32-5-amd64~ax=O~ac=mp4%3Atrans/dv15/mogulus-user-files/chcanalcuatroaljarafe/2011/10/05/9139cbd2-c0da-4e7b-a130-426a7a9401c1.mp4~dx=5.223~en=canalcuatroaljarafe~m=PL~v=5316~w=5975~x=5256~y=5178~z=0~aa=extondemand.livestream.com~ab=ondemand~ad=1935~ae=rtmp~pu=http%3A//www.canal4aljarafe.es/video.php%3Fid%3Dpla_6e58511d-9662-4064-b2e9-12efcc135a42~ag=www.canal4aljarafe.es~ai=Mozilla/5.0%20%28X11%3B%20U%3B%20Linux%20x86_64%3B%20es-ES%3B%20rv%3A1.9.1.16%29%20Gecko/20110929%20Iceweasel/3.5.16%20%28like%20Firefox/3.5.16%29~aj=11,0,1,60~ak=Flash_PlugIn~al=Linux%202.6.32-5-amd64~am=Flash_PlugIn:F~an=278~ao=413~ap=691~aq=1573880~as=25.0000~at=Netscape~au=1425*652~av=512*288~aw=rtmp%3A//extondemand.livestream.com/ondemand/mp4%3Atrans/dv15/mogulus-user-files/chcanalcuatroaljarafe/2011/10/05/9139cbd2-c0da-4e7b-a130-426a7a9401c1.mp4~ax=O~ay=csma-1.9.13:csmaLoader-1.4.3~az=1.2~ba=900000~bb=212.106.219.62~da=0~db=172.1417:9~dd=0~de=0~dg=0~dh=0~dl=425438:9~dm=6.8857:9~do=0~dp=0~ds=0~du=270000:9~dv=1~ea=20~eb=1:0.0058~fb=0~fd=0~fe=0~ff=0~fg=0,0,0,0~fh=0,0,0,0~fi=-:0:5226::1~fj=-:5226~fk=S:0,Q:0,D:0 HTTP/1.1

Debemos buscar una direccion tipo url de rmtp que nos lleve a un archivo de video, normalmente mp4 o flv, en este caso hay una dirección que se repite:

rtmp%3A//extondemand.livestream.com/ondemand/mp4%3Atrans/dv15/mogulus-user-files/chcanalcuatroaljarafe/2011/10/05/9139cbd2-c0da-4e7b-a130-426a7a9401c1.mp4

Como sabemos que el valor ascii %3A es ":" ya tenemos la url que buscamos:

rtmp://extondemand.livestream.com/ondemand/mp4:trans/dv15/mogulus-user-files/chcanalcuatroaljarafe/2011/10/05/9139cbd2-c0da-4e7b-a130-426a7a9401c1.mp4

Para descargarlo podemos usar rtmpdump o flvstreamer, probe los dos y el que me funciono fue el segundo:

flvstreamer -r rtmp://extondemand.livestream.com/ondemand/mp4:trans/dv15/mogulus-user-files/chcanalcuatroaljarafe/2011/10/05/9139cbd2-c0da-4e7b-a130-426a7a9401c1.mp4 -o prueba.mp4

Se corto al 84%, pero lo que yo buscaba era el principio y fue mas que suficiente. Para descargarlo todo está la opción de --resume dentro de un pequeño script en bash:

while true; do flvstreamer --resume -r rtmp://extondemand.livestream.com/ondemand/mp4:trans/dv15/mogulus-user-files/chcanalcuatroaljarafe/2011/10/05/9139cbd2-c0da-4e7b-a130-426a7a9401c1.mp4 -o prueba.mp4; done

Ahora solo queda convertirlo en avi para que se pueda ver en un dvd que admita divx, yo para eso utilizo ffmpeg:

ffmpeg -i prueba.mp4 -vcodec libxvid -pass 2 -acodec libmp3lame video.avi

Para poder dar dos pases, tenemos que crear en la misma carpeta un archivo llamado ffmpeg2pass-0.log y suele quedar muy bien, en este caso me daba un error y no me funciono, asi que utilicé mencoder:

mencoder prueba.mp4 -oac mp3lame -lameopts preset=128 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1200 -ofps 25 -of avi -o out.avi

Ahora si, ya tenemos nuestro archivo out.avi para hacer lo que queramos, en mi caso, la parte inicial que me interesaba la obtuve con avidemux, un programa perfecto y sencillo para manipular archivos de video.

Nos vemos.
[JJ]