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
# iptables -t nat -D OUTPUT -p tcp –dport 1935 -j REDIRECT
iptables: No chain/target/match by that name.
Gracias, funcionó a la perfección.