Me he pasado unas cuantas horas intentando descargar un vídeo en Flash para no depender de mi conexión a Internet cuando quiera volver a verlo. Con Firefox no suelo tener mayor problema en hacerlo gracias a Video Download Helper, una extensión que a golpe de click te resuelve la papeleta casi siempre. Pero el caso de esta tarde quedaba fuera de los dominios de Video Download Helper, porque no se trataba de un vídeo en Flash (FLV) descargado desde la web (HTTP), sino del típico esquema reproductor multimedia en Flash + streaming de vídeo por RTMP.
En concreto, mi “reto” era descargar la entrevista de Stephen Colbert a Lawrence Lessig (os la recomiendo, muy buena
).
Buscando en gúguel llegué a páginas bastante desactualizadas que me hablaban de infinidad de programas para Win32 como GetFLV o ReplayAV que terminé probando en Wine y en una máquina Windows con VirtualBox, con poco éxito.
Cada vez que pulsaba el botón de play, mi frustración iba en aumento, porque tenía claro que “si se puede ver, se puede descargar”. Así que con el típico enfoque “moscas a cañonazos” que predomina en el recetario de este humilde blog, terminé dando con lo obvio (aunque como dijo Lacan: “Lo obvio suele pasar desapercibido, precísamente por obvio”, también procede el más castizo refrán: “vistos los cojones, toro”): capturar todo, buscar URLs en la captura y descargarlas.
Manos a la obra:
1. Captura de tráfico
Para capturar el tráfico, nada como el viejo tcpdump a todo trapo:
tcpdump -i eth0 -p -s 0 -w captura.pcap
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
^C7042 packets captured
7042 packets received by filter
0 packets dropped by kernel
2. Búsqueda en la captura
Para buscar, probamos con grep:
grep -i rtmp captura.pcap
Coincidencia en el fichero binario captura.pcap
Sabemos que estás ahí…
strings captura.pcap | grep rtmp
rtmp://cp9950.edgefcs.net/ondemand/mtvnorigin/gsp.comedystor/com/colbert/season_05/episode_004/cr_05004_05_240.flv
rtmp://cp9950.edgefcs.net/ondemand/mtvnorigin/gsp.comedystor/com/colbert/season_05/episode_004/cr_05004_05_480.flv
@rtmp://88.221.92.180:1935/ondemand?_fcs_vhost=cp9950.edgefcs.net
Perfecto, a por ello…
3. Descarga del stream de vídeo
Para bajar un flujo de datos en RTMP, rtmpdump o flvstreamer son nuestros aliados:
flvstreamer -r "rtmp://cp9950.edgefcs.net/ondemand/mtvnorigin/gsp.comedystor/com/colbert/season_05/episode_004/cr_05004_05_240.flv" -o colbert.flv
FLVStreamer v1.8e
(c) 2009 Andrej Stepanchuk, The Flvstreamer Team, license: GPL
Connecting ...
Starting download at 0.000 kB
Metadata:
duration 370.94
width 240
height 180
videodatarate 250
audiodatarate 80
framerate 14.98
creationdate Fri Jan 9 01:01:09 2009
lasttimestamp 370.91
lastkeyframetimestamp 368.97
videocodecid 4
audiocodecid 2
audiodelay 0
canSeekToEnd FALSE
filesize 12810455
videosize 8851208
audiosize 3879788
datasize 19758
ERROR: ReadPacket, failed to read RTMP packet body. len: 65812
Download may be incomplete (downloaded about 8.30%), try --resume
Closing connection.
Vaya, parece que se corta cada pocos bytes, probaremos usando la fuerza bruta y la opción “resume”:
while true; do flvstreamer --resume -r "rtmp://cp9950.edgefcs.net/ondemand/mtvnorigin/gsp.comedystor/com/colbert/season_05/episode_004/cr_05004_05_240.flv" -o colbert.flv; done
¡Genial! El FLV ya está en nuestro disco duro a buen recaudo. Ahora a remezclaro y vitaminarlo
Filed under: Informática, Seguridad Informática | 6 Comments
Tags: Comedy Central, download, FLV, flvstreamer, RTMP, tcpdump, video

Me lo he pasado genial leyendo el post. Buen año Txipi y a ver si actualizamos más en el 2010
Me encantan “tips” como éstos, gracias
Muchas gracis por la info txipi, me he partido con el video final jajajaja :->
hola amigos quisiera pedirles ayuda para capturar un canal de television que trasmiten directamente por internet el url del video es este:
http://cdn1.ustream.tv/swf/4/viewer.228.swf?cid=1/2547718&vrsl=c.4.279
nadamas que no e podido hacerlo. si me pudieran ayudar se los agradecería muchisimo
Hola amigo que buen post pero quisiera saber de donde descargo los programas que usaste y si los hay para windows o solo para linux me gustaria poder descarg un curso de programacion que esta en este formato gracias.
Hola! la verdad es que hace tiempo que he querido bajar hartos flv que están alojados en fuentes rtmp, pero a través de el programa flvstreamer no me resulta para archivos muy extensos (más de 10 megas), y cuando pongo la opción de –resume no me resulta nada…
mira, un ejemplo del rtmp que quiero bajar es este:
rtmp://64.76.139.87/oflaDemo/2010/10_sms_mi/10_001_sms_MI.flv
lo puedes descargar a través de ese sistema? o es solo que yo no sé dar bien al comando resume?
gracias!