# rm-rf.es

Cómo descargar vídeos a través de RTMP

Hay sitios web, sobre todo los de cadenas de televisión que ofrecen ‘televisión a la carta’ que ofrecen visualización de sus programas, series y demás pero no está (a simple vista) la posibilidad de descargar los vídeos. Muchos de estos sitios web ofrecen sus vídeos por RTMP.

Definición de RTMP por Wikipedia:

Real Time Messaging Protocol (RTMP) was initially a proprietary protocol developed by Macromedia for streaming audio, video and data over the Internet, between a Flash player and a server. Macromedia is now owned by Adobe, which has released an incomplete version of the specification of the protocol for public use.

The RTMP protocol has multiple variations:

The «plain» protocol which works on top of and uses TCP port number 1935 by default.
RTMPS which is RTMP over an TLS/SSL connection.
RTMPE which is RTMP encrypted using Adobe’s own security mechanism. While the details of the implementation are proprietary, the mechanism uses industry standard cryptography primitives.[1]
RTMPT which is encapsulated within HTTP requests to traverse firewalls. RTMPT is frequently found utilizing cleartext requests on TCP ports 80 and 443 to bypass most corporate traffic filtering. The encapsulated session may carry plain RTMP, RTMPS, or RTMPE packets within.

Para descargar estos vídeos desde GNU/Linux podemos utilizar rtmpdump, disponible en la mayoría de repositorios, en Debian y derivados lo instalamos desde apt:

# apt-get install rtmpdump

Para descargar el vídeo, primero debemos conocer la ruta completa al vídeo, para ello activamos el servidor rtmpdump:

$ rtmpsrv
RTMP Server v2.4
(c) 2010 Andrej Stepanchuk, Howard Chu; license: GPL

Streaming on rtmp://0.0.0.0:1935

Como bien indican en este blog es necesario ahora redirigir todo el tráfico RTMP a nuestro equipo (al servidor que acabamos de levantar en el puerto TCP 1935, lo hacemos con IPTABLES:

# iptables -t nat -A OUTPUT -p tcp --dport 1935 -j REDIRECT

Ahora lo que debemos hacer es ir a nuestro navegador y reproducir el vídeo que queramos descargar, dejando el servidor rtmp escuchando en la terminal. Cuando empiece la reproducción el rtmpsrv capturará el tráfico y nos dirá directamente el comando que tenemos que ejecutar para la descarga del vídeo, ejemplo:

WARNING: gnome-keyring:: couldn't connect to: /tmp/keyring-45dvJQ/pkcs11: No such file or directory
WARNING: Trying different position for client digest!

rtmpdump -r "rtmp://aragontvvodfs.fplive.net/aragontvvod" -a "aragontvvod" \
-f "LNX 11,9,900,152" \
-W "http://alacarta.aragontelevision.es/js/flowplayer/flowplayer.commercial-3.2.7.swf" \
-p "http://alacarta.aragontelevision.es/programas/aragon-en-abierto/jueves-16-de-enero-16012014-1806" \
-y "mp4:/web/19241/19241.mp4" -o 19241.flv
Closing connection... done!

Ahora simplemente deshabilitamos la redirección de tráfico con IPTABLES y descargamos el vídeo:

# iptables -t nat -D OUTPUT -p tcp --dport 1935 -j REDIRECT

Descargamos:

$ rtmpdump -r "rtmp://aragontvvodfs.fplive.net/aragontvvod" \
-a "aragontvvod" -f "LNX 11,9,900,152" \
-W "http://alacarta.aragontelevision.es/js/flowplayer/flowplayer.commercial-3.2.7.swf" \
-p "http://alacarta.aragontelevision.es/programas/aragon-en-abierto/jueves-16-de-enero-16012014-1806" \
-y "mp4:/web/19241/19241.mp4" -o 19241.flv
RTMPDump v2.4
(c) 2010 Andrej Stepanchuk, Howard Chu, The Flvstreamer Team; license: GPL
WARNING: gnome-keyring:: couldn't connect to: /tmp/keyring-45dvJQ/pkcs11: No such file or directory
Connecting ...
INFO: Connected...
Starting download at: 0.000 kB
INFO: Metadata:
INFO:   duration              5748.75
INFO:   moovPosition          40.00
INFO:   width                 640.00
INFO:   height                360.00
INFO:   videocodecid          avc1
INFO:   audiocodecid          mp4a
INFO:   avcprofile            100.00
INFO:   avclevel              30.00
INFO:   aacaot                2.00
INFO:   videoframerate        25.00
INFO:   audiosamplerate       48000.00
INFO:   audiochannels         2.00
INFO: tags:
INFO:   ©too                 Lavf54.63.104
INFO: trackinfo:
INFO:   length                73583616.00
INFO:   timescale             12800.00
INFO:   language              und
INFO: sampledescription:
INFO:   sampletype            avc1
INFO:   length                275940160.00
INFO:   timescale             48000.00
INFO:   language              und
INFO: sampledescription:
INFO:   sampletype            mp4a
656177.338 kB / 5748.74 sec (99.9%)
Download complete
Salir de la versión móvil