Como bajar vídeos flash que se resisten (ComedyCentral, por ejemplo)

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 :-)

16 pensamientos en “Como bajar vídeos flash que se resisten (ComedyCentral, por ejemplo)

  1. Shadonwk

    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.

    Responder
  2. Gerardo

    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!

    Responder
  3. Alfr

    Gracias amigo, pero…
    sería mucho pedir un tutorial en video?
    no puedo ingresar ningún comando en tcpdump y no entiendo por qué .
    Gracias y un abrazo

    Responder
  4. pilar gonzalez

    Hola…Por favor necesito ayuda urgente…Me inscribí en un curso y tiene 19 vídeos para estudiar pero solo me dan 1 mes y no voy a terminar,después pierdo la licencia para verlos he tratado por todos los medios de bajar los vídeos y no puedo.Parece que están protegidos por “authpro” ya probe mozilla firefox, a tub catcher, muchos. Y no puedo no tienen URL, solo los necesito para estudiar..Ayudenme por favor

    Responder
  5. chambertuX

    E probado el método mas de una vez en la web eitb.tv en alacarta pero me es imposible. ¿El autor del blog a probado alguna vez en eitb?. Gracias por el post

    Responder

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>