ubugnu@ubugnu-laptop:~$ sudo apt-get install tshark rtmpdumpOn aura aussi besoin d'un lecteur vidéo qu'on puisse utiliser en ligne de commande, optez pour mplayer (léger mais j'ai remarqué qu'on ne pouvait pas rendre la vidéo plein-écran):
ubugnu@ubugnu-laptop:~$ sudo apt-get install mplayerou vlc (très complet):
ubugnu@ubugnu-laptop:~$ sudo apt-get install vlcSi vous optez pour mplayer il faudra mettre à la fin de chaque commande
| mplayer -
pour lire le flux, si vous optez pour vlc préférez la version en ligne de commande cvlc en mettant à la fin de chaque commande | cvlc -
Maintenant voyons comment on a utilisé rtmpdump dans le billet précédant:ubugnu@ubugnu-laptop:~$ rtmpdump -qv -r rtmp://livestfslivefs.fplive.net/livestfslive-live/ -y "aljazeera_ar_medium?videoId=747084146001&lineUpId=&pubId=665003303001&playerId=751182905001&affiliateId=" -W "http://admin.brightcove.com/viewer/us1.24.04.08.2011-01-14072625/federatedVideoUI/BrightcovePlayer.swf" -p http://english.aljazeera.net/watch_now/ -a "aljazeeraflashlive-live?videoId=747084146001&lineUpId=&pubId=665003303001&playerId=751182905001&affiliateId=" | mplayer -Analysons les paramètres:
-q
: mode silencieux (quit)-v
: pour dire qu'on regarde une vidéo en live-r
: correspondra au paramètre tcUrl qui apparaîtra dans l'analyse des paquets-y
: correspondra au chemin et apparaîtra après l'attribut play qui apparaîtra dans l'analyse des paquets-W
: correspondra au paramètre swfUrl qui apparaîtra dans l'analyse des paquets-p
: correspondra au paramètre pageUrl qui apparaîtra dans l'analyse des paquets-a
: correspondra au paramètre app qui apparaîtra dans l'analyse des paquets
mplayer -
demande à mplayer de lire le flux sortant (stdout).Maintenant voyons comment on peut récupérer ces paramètres en utilisant le sniffer de paquets tshark:
- Lancer
tshark
pour sniffer le port 1935 (réservé au protocole rtmp) dont on veut capturer les paquets-f "port 1935"
, spécifier quelle interface réseau il faut utiliser-i eth0
, pour savoir quelle interface vous utilisez pour vous connecter à internet lancezifconfig
et voyez quelle interface porte votre adresse IP, restreindre le nombre de paquets à un nombre limité pour ne pas que ça dure trop longtemps (seulement les premiers paquets comportent les informations qui nous intéressent) avec-c 50
, spécifier qu'on veut voir l'output en hex et ascii-x
et enfin faire quelques manipulations pour ne garder que la partie ascii et supprimer les sauts de lignes. la deuxième partie de la commande permet alors d'extraire les informations voulues:ubugnu@ubugnu-laptop:~$ t=$(sudo tshark -c 50 -i eth0 -f "port 1935" -x | awk '{print $18}' | tr -d '\n'); echo $t | grep -oP 'app((?!swfUrl).?){0,}|swfUrl((?!tcUrl).?){0,}|tcUrl((?!pageUrl).?){0,}|pageUrl(.?){100}|\.play\.(.?){100}'
- Lancer le streaming de la chaîne (ou vidéo) voulu (par exemple http://www.livestation.com/channels/43-al-jazeera-arabic) dans un navigateur et attendre jusqu'à ce que l'image apparaisse, vous verrez alors que la commande précédente aura affiché quelque chose du genre:
ubugnu@ubugnu-laptop:~$ t=$(sudo tshark -c 50 -i eth0 -f "port 1935" -x | awk '{print $18}' | tr -d '\n'); echo $t | grep -oP 'app((?!swfUrl).?){0,}|swfUrl((?!tcUrl).?){0,}|tcUrl((?!pageUrl).?){0,}|pageUrl(.?){100}|\.play\.(.?){100}'
[sudo] password for ubugnu:
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
50 packets captured
app...live/..flashVer...LNX.
swfUrl..6http://www.livestation.com/flash/player/5.4/player.swf...
tcUrl...rtmp://media7.lsops.net/live/..fpad....capabilities.@m........audioCodecs.@.........videoCodecs.@o........videoFunction..?........
pageUrl..8http://www.livestation.com/channels/43-al-jazeera-arabic..objectEncoding.ve......<.;.?..C........
.play.............aljazeer_ar_medium.sdp...........C.....5....getStreamLength.@...........aljazeer_ar_medi - Maintenant on a tout les paramètres dont on a besoin, mais faites attention, parfois un paramètre peut être "pollué" par des caractères non affichables qu'on retrouve alors incrusté sous forme de point ".", il faut savoir les repérer, dans notre exemple tout est clean:
app: live/-a
swfUrl: http://www.livestation.com/flash/player/5.4/player.swf-W
tcUrl: rtmp://media7.lsops.net/live/-r
pageUrl: http://www.livestation.com/channels/43-al-jazeera-arabic-p
path: aljazeer_ar_medium.sdp-y
- La ligne de commande pour voir ce streaming est donc:
ubugnu@ubugnu-laptop:~$ rtmpdump -qv -a "live/" -W "http://www.livestation.com/flash/player/5.4/player.swf" -r "rtmp://media7.lsops.net/live/" -p "http://www.livestation.com/channels/43-al-jazeera-arabic" -y "aljazeer_ar_medium.sdp" | mplayer -
- On peut refaire la même opération avec plusieurs chaînes, voici quelques exemples de chaînes que j'ai trouvé ici:
ubugnu@ubugnu-laptop:~$ echo alarabia
alarabia
ubugnu@ubugnu:~$ t=$(sudo tshark -c 50 -i eth0 -f "port 1935" -x | awk '{print $18}' | tr -d '\n'); echo $t | grep -oP 'app((?!swfUrl).?){0,}|swfUrl((?!tcUrl).?){0,}|tcUrl((?!pageUrl).?){0,}|pageUrl(.?){100}|\.play\.(.?){100}'
[sudo] password for ubugnu:
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
50 packets captured
app...live/..flashVer...LNX,154,17..
swfUrl..6http://www.livestation.com/flash/player/5.4/player.swf...
tcUrl...rtmp://media2.lsops.net/live/..fpad....capabilities.@m........audioCodecs.@.........videoCodecs.@o........videoFunction..?.........
pageUrl..?http://www.livestation.com/channels/57-al-arabiya-arabic-arabic..objectEncoding...{.e....;.@..E..
.play.............alarabiy_ar_medium.sdp......{.e....;.@..E..(..@.1.<..!.6...d.........Q..P...{.e....;.@..
ubugnu@ubugnu:~$ echo cnn
cnn
ubugnu@ubugnu:~$ t=$(sudo tshark -c 50 -i eth0 -f "port 1935" -x | awk '{print $18}' | tr -d '\n'); echo $t | grep -oP 'app((?!swfUrl).?){0,}|swfUrl((?!tcUrl).?){0,}|tcUrl((?!pageUrl).?){0,}|pageUrl(.?){100}|\.play\.(.?){100}'
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
50 packets captured
app...livestfslive-live/..flashVer...LNX10,2,154,17..
swfUrl..6http://www.livestation.com/flash/player/5.4./player.swf..
tcUrl..3rtmp://livestfslivefs.fplive.net/livestfslive-live/..fpad....capabilities.@m........audioCodecs.@.........v.ideoCodecs.@o........videoFunction.?.........
pageUrl..8http://www.livestation.com/products/66-cnn-international..objectEncoding...............{.e....;.@
.play............jlivestfslive_cnn_en_veryhigh?start_time=20110320104231&end_time=20110320105231&token=0d9
ubugnu@ubugnu:~$ echo euronews
euronews
ubugnu@ubugnu:~$ t=$(sudo tshark -c 50 -i eth0 -f "port 1935" -x | awk '{print $18}' | tr -d '\n'); echo $t | grep -oP 'app((?!swfUrl).?){0,}|swfUrl((?!tcUrl).?){0,}|tcUrl((?!pageUrl).?){0,}|pageUrl(.?){100}|\.play\.(.?){100}'
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
50 packets captured
app...live/..flashVer...LNX,154,17..
swfUrl..6http://www.livestation.com/flash/player/5.4/player.swf...
tcUrl...rtmp://media2.lsops.net/live/..fpad....capabilities.@m........audioCodecs.@.........videoCodecs.@o........videoFunction..?.........
pageUrl..7http://www.livestation.com/channels/12-euronews-franais..objectEncoding...........{.e....;.@..E..
.play.............euronews_fr_medium.sdp.......;.@..{.e...E..i..@.@..j...d.!.6....33.tR.^.P....r........*.
.play.............euronews_fr_medium.sdp.......;.@..{.e...E..(..@.@......d.!.6....33..R.^.P...{.e....;.@..
ubugnu@ubugnu:~$ echo france24
france24
ubugnu@ubugnu:~$ t=$(sudo tshark -c 50 -i eth0 -f "port 1935" -x | awk '{print $18}' | tr -d '\n'); echo $t | grep -oP 'app((?!swfUrl).?){0,}|swfUrl((?!tcUrl).?){0,}|tcUrl((?!pageUrl).?){0,}|pageUrl(.?){100}|\.play\.(.?){100}'
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
50 packets captured
app...france24/fr/..flashVer...LNX
swfUrl..6http://www.livestation.com/flash/player/5.4/playe.r.swf..
tcUrl..$rtmp://media2.lsops.net/france24/fr/..fpad....capabilities.@m........audioCodecs.@.........videoCodecs.@o.........videoFunction.?.........
pageUrl..6http://www.livestation.com/channels/5-france-24-french..objectEncoding..............{.e....;.@..E
.play.............f24_livefr..{.e....;.@..E..(.L@.1....!.6...d....s...S..2P...{.e....;.@..E..R.M@.1....!.6
À partir de ces informations on peut conclure que:
Pour alarabiaubugnu@ubugnu-laptop:~$ rtmpdump -qv -a "live/" -W "http://www.livestation.com/flash/player/5.4/player.swf" -r "rtmp://media2.lsops.net/live/" -p "http://www.livestation.com/channels/57-al-arabiya-arabic-arabic" -y "alarabiy_ar_medium.sdp" | mplayer -
Pour cnnubugnu@ubugnu-laptop:~$ rtmpdump -qv -a "livestfslive-live/" -W "http://www.livestation.com/flash/player/5.4/player.swf" -r "rtmp://livestfslivefs.fplive.net/livestfslive-live/" -p "http://www.livestation.com/products/66-cnn-international" -y "jlivestfslive_cnn_en_veryhigh" | mplayer -
(ce dernier ne marche pas il faut encore un hack vu que cette chaîne est payante sur le site)
Pour euronewsubugnu@ubugnu-laptop:~$ rtmpdump -qv -a "live/" -W "http://www.livestation.com/flash/player/5.4/player.swf" -r "rtmp://media2.lsops.net/live/" -p "http://www.livestation.com/channels/12-euronews-franais" -y "euronews_fr_medium.sdp" | mplayer -
Il est aussi possible d'aller chercher ces information dans le site même de la chaîne qui offre un streaming en live, on obtient:ubugnu@ubugnu-laptop:~$ t=$(sudo tshark -c 50 -i eth0 -f "port 1935" -x | awk '{print $18}' | tr -d '\n'); echo $t | grep -oP 'app((?!swfUrl).?){0,}|swfUrl((?!tcUrl).?){0,}|tcUrl((?!pageUrl).?){0,}|pageUrl(.?){100}|\.play\.(.?){100}'
Le commande sera donc (attention il y'avait un point incrusté dans le lien du swf, justement dans l'extension):
[sudo] password for ubugnu:
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
50 packets captured
app...rtpeuronewslive..flashVer...LNX,2,154,17..
swfUrl..0http://fr.euronews.net/media/player_live_1_7.s.wf..
tcUrl..)rtmp://178.32.100.43:1935/rtpeuronewslive..fpad....capabilities.@m........audioCodecs.@.........videoCodecs.@o.........videoFunction.?.........
pageUrl..'http://fr.euronews.net/infos/en-direct/..objectEncoding.@.................w_.d...m.....p{..7.YRz:
.play.............fre_euronews-flash-750.sdp.....{.e....;.@..E..4R.@.2..j..d..../.w/..3...............:(.%ubugnu@ubugnu-laptop:~$ rtmpdump -qv -a "rtpeuronewslive" -W "http://fr.euronews.net/media/player_live_1_7.swf" -r "rtmp://178.32.100.43:1935/rtpeuronewslive" -p "http://fr.euronews.net/infos/en-direct/" -y "fre_euronews-flash-750.sdp" | mplayer -
Pour france24ubugnu@ubugnu-laptop:~$ rtmpdump -qv -a "france24/fr/" -W "http://www.livestation.com/flash/player/5.4/player.swf" -r "rtmp://media2.lsops.net/france24/fr/" -p "http://www.livestation.com/channels/5-france-24-french" -y "f24_livefr" | mplayer -
cette dernière ne donne que le son, mais il est possible de chercher ces informations depuis le site de la chaîne qui offre aussi un streaming en live, on obtient:ubugnu@ubugnu-laptop:~$ t=$(sudo tshark -c 50 -i eth0 -f "port 1935" -x | awk '{print $18}' | tr -d '\n'); echo $t | grep -oP 'app((?!swfUrl).?){0,}|swfUrl((?!tcUrl).?){0,}|tcUrl((?!pageUrl).?){0,}|pageUrl(.?){100}|\.play\.(.?){100}'
La commande sera donc (attention au point incrusté dans le lien du swf!):
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
50 packets captured
app...france24_live/fr..flashVer...LNX0,2,154,17..
swfUrl..Ohttp://www.france24.com/fr/sites/all/modules/.maison/aef_player/flash/player.swf..
tcUrl..3rtmp://stream2.france24.yacast.net/france24_live/fr..fpad....capabilities.@m.........audioCodecs.@.........videoCodecs.@o........videoFunction.?.........
pageUrl..<http://www.france24.com/fr/aef_player_popup/france.24_player#..objectEncoding...{.e....;.@..E....
.play.............f24_livefr......{.e....;.@..E..p..@.2.qN..h....d......U.S.e................?.'{......@..ubugnu@ubugnu-laptop:~$ rtmpdump -qv -a "france24_live/fr" -W "http://www.france24.com/fr/sites/all/modules/maison/aef_player/flash/player.swf" -r "rtmp://stream2.france24.yacast.net/france24_live/fr" -p "http://www.france24.com/fr/aef_player_popup/france.24_player#" -y "f24_livefr" | mplayer -
Apparemment celui ci ne marche pas aussi, je crois donc qu'il faut modifier quelques paramètres de rtmpdump (si quelqu'un sait comment faire?) car il a l'air de ne pas pouvoir lire le flux - On remarque aussi que pour la plupart de ces chaînes d'informations, on peut changer deux paramètres dans la valeur de -y: la qualité et la langue, essayez de changer "medium" en "high" ou "veryhigh" si votre connexion vous le permet, ou alors il y'a aussi "low", pour la langue aussi il y'a les trois choix "ar", "fr" ou "en", l'étape suivante serait de créer un script qui prend comme arguments la chaîne, la qualité et la langue et nous donne la vidéo en direct, ce sera pour une prochaine fois inchaâ'Allah.