#1 Le 04/07/2007, à 00:27
- Sleipnir
Récuperer adresse du stream lu par vlc
Bonjour,
J'aimerais faire un petit script bash + zenity pour enregistrer facilement les streamtv via vlc.
Il existe déjà des logiciels mais je voudrais un truc vraiment basique ( c'est pour ma femme.... ), genre un raccourci qui propose d'enregistrer le stream actuel, avec, si possible, un début et une fin d'enregistrement configurable ( commencer dans 10 mn, finir dans 120 mn, sleep ??? ou heure début et fin, mais ça m'a l'air plus compliqué !)
D'entrée je bloque, je n'arrive pas à récupérer l'adresse du stream. Avec netstat j'ai bien l'adresse du flux, mais elle ne donne rien entrée dans vlc.
Quelqu'un aurait-il une solution simple pour un débutant ?
D'avance, merci.
Hors ligne
#2 Le 04/07/2007, à 11:14
- marc31
Re : Récuperer adresse du stream lu par vlc
regarde du coté de DownloadHelper (plugin firefox) pour avoir une idée sur les flux telechagés si ca provient d'internet.
ubuntu-gutsy / ATI RC410 [Radeon Xpress 200] + Nvidia GeForce 7300 SE / wireless RaLink RT2500 / toulouse-ouest / xmpp://marc.quinton@jabber.org
Hors ligne
#3 Le 04/07/2007, à 14:11
- Sleipnir
Re : Récuperer adresse du stream lu par vlc
J'ai installé cette extension ( depuis le temps que je devais installer un truc de ce genre ! ) mais je ne vois pas en quoi cela peut m'aider ?
Je précise que j'essaie de récupérer le flux des chaines "tvsurpc leneuf". Les adresses de stream change régulierement, donc je ne peux pas faire une playlist prédéfinie.
D'où l'interret de récupérer l'adresse du stream lu par vlc.
J'ai cherché dans les options vlc, rien trouvé et avec netstat....les adresses ne sont pas exploitables ( même en numérique )
Hors ligne
#4 Le 04/07/2007, à 16:26
- marc31
Re : Récuperer adresse du stream lu par vlc
Je précise que j'essaie de récupérer le flux des chaines "tvsurpc leneuf".
tu peux preciser, j'ai fait la meme chose sur la freebox, et ca marche trop bien !
ubuntu-gutsy / ATI RC410 [Radeon Xpress 200] + Nvidia GeForce 7300 SE / wireless RaLink RT2500 / toulouse-ouest / xmpp://marc.quinton@jabber.org
Hors ligne
#5 Le 04/07/2007, à 17:14
- Sleipnir
Re : Récuperer adresse du stream lu par vlc
Sleipnir a écrit :Je précise que j'essaie de récupérer le flux des chaines "tvsurpc leneuf".
tu peux preciser, j'ai fait la meme chose sur la freebox, et ca marche trop bien !
je recupere le fichiers m3u mis a jour, je l'ouvre avec vlc pour que les adresses de stream apparaissent.Dans le m3u les adresses apparaissent comme ca: http://80.118.196.219/webtv-asx.cgi?channel=france_2.
Entrée telle que avec le commande vlc, ca ne donne rien. Il faut lancer vlc puis selectionner cette adresse dans la playlist pour que d'autre adresses apparaissent ( je sais pas si j'ai ete clair ? )...
Je commence juste, avec mes connaissances réduites, d'ailleurs je coince sur la programmation de fermeture de vlc. Pour que vous puissiez voir "mon niveau", je mets le début du travail (en fait j'en suis là ! )
#!/bin/bash
debut=`zenity --entry --text="Début d'enregistrement dans combien de minutes ?"`
fin=`zenity --entry --text="Fin d'enregistrement dans combien de minutes ?"`
zenity --question --text="L'enregistrement commencera dans $debut mn, se terminera dans $fin mn "
if [[ $? == 1 ]]
then
exit
else
sleep $debut
vlc 'htpp.......' #il faudrait l'adresse du flux de lecture voulu, cad, le flux actuel via netstat ou autrement ?
sleep $fin
vlc:quit
exit
fi
exit
Le début fonctionne mais vlc ne se ferme pas, le "sleep $fin" entre en action une fois vlc fermé, c'est pas ce que je veux ! Soyez indulgents
ps: marc31, pourrais tu mettre ton code ( si il n'est pas trop compliqué ), ça pourrait me servir, si tu veux bien sur...
EDIT: j'arrive à fermer en faisant un killall vlc, ça ne serait pas un peu violent ??? vlc:quit ne fonctionne pas
vlc "mms://media.gameznflix.com/GNFMovies" :demux=dump :demuxdump-file="~/Desktop/test.avi" & sleep 60 ; killall vlc
Dernière modification par Sleipnir (Le 04/07/2007, à 19:08)
Hors ligne
#6 Le 04/07/2007, à 19:42
- marc31
Re : Récuperer adresse du stream lu par vlc
tu peux faire ca :
vlc .... & # vlc en tache de fond
pid=$! # tu recuperes le PID de VLC,
sleep $time
kill $pid
pour l'acces au code source, tu peux c'est du logiciel libre, mais ca ne te servira pas beaucoup ; c'est spécifique a Free et assez complexe (code php avec des classes) : http://php.classes.free.fr/php/gtk/
ubuntu-gutsy / ATI RC410 [Radeon Xpress 200] + Nvidia GeForce 7300 SE / wireless RaLink RT2500 / toulouse-ouest / xmpp://marc.quinton@jabber.org
Hors ligne
#7 Le 04/07/2007, à 19:58
- Link31
Re : Récuperer adresse du stream lu par vlc
CHAINE=france_2
FLUX=$(curl `curl http://televisionsurpc.neuf.fr/televisionsurpc.m3u | grep $CHAINE` | grep REF | head -n1 | cut -d "\"" -f 2)
echo $FLUX
Dernière modification par Link31 (Le 04/07/2007, à 20:01)
Hors ligne
#8 Le 04/07/2007, à 20:50
- Sleipnir
Re : Récuperer adresse du stream lu par vlc
CHAINE=france_2 FLUX=$(curl `curl http://televisionsurpc.neuf.fr/televisionsurpc.m3u | grep $CHAINE` | grep REF | head -n1 | cut -d "\"" -f 2) echo $FLUX
curl n'etait pas installé ! sinon voila le resultat que le script me sort
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1522 100 1522 0 0 4855 0 --:--:-- --:--:-- --:--:-- 165k
Mais peut etre que le fait que je ne sois pas connecté sur leneuf y est pour quelque chose ?
J'ai pas tout compris le code.
-chercher m3u ( curl )
-ligne avec $CHAINE ( grep )
la ????
-isoler ligne avec REF ??? ( grep )
- afficher 1 ligne ( head )
- couper avec delimiteur "\" et 2 champs ( cut ) ( j'ai pas tout compris encore ...! )
donc j'imagine que le code va me cherhcer la ligne avec france_2, il me l'a découpe comme il faut et me l'affiche ( echo ), c'est bien ça ?
Mais pourquoi un double curl "$(curl `curl http://telev...")
Hors ligne
#9 Le 04/07/2007, à 21:03
- Sleipnir
Re : Récuperer adresse du stream lu par vlc
tu peux faire ça :
vlc .... & # vlc en tache de fond
pid=$! # tu récupères le PID de VLC,
sleep $time
kill $pid
C'est impeccable, mais est ce qu'un kill ça ne va pas être trop violent ? Au niveau de l'enregistrement ?
Sinon, petit détails, $! représente quoi ? l'entrée la sortie de la dernière ligne ?
En tout cas maintenant je vois l'utilité de faire tourner en tache de fond, c'est ca qu'on appelle reprendre la main sur le shell ?
Hors ligne
#10 Le 04/07/2007, à 21:12
- marc31
Re : Récuperer adresse du stream lu par vlc
C'est impeccable, mais est ce qu'un kill ça ne va pas être trop violent ? Au niveau de l'enregistrement ?
non je ne crois pas, et puis il existe plusieurs types de signaux. Je ne sais pas lesquels sont utilisables par VLC.
Sinon, petit détails, $! représente quoi ? l'entrée la sortie de la dernière ligne ?
a ton avis ... ; c'est le PID (process ID) du dernier process lancé en tache de fond
En tout cas maintenant je vois l'utilité de faire tourner en tache de fond, c'est ca qu'on appelle reprendre la main sur le shell ?
oui si tu veux, ou faire tourner un process en tache de fond. C'est pas tres compliqué sur OS Linux, mais sous DOS, a l'époque c'etait mission impossible. Ici, c'est le noyau Linux qui se charge de faire du temps partagé entre les différents processus. C'est magique :-)
ubuntu-gutsy / ATI RC410 [Radeon Xpress 200] + Nvidia GeForce 7300 SE / wireless RaLink RT2500 / toulouse-ouest / xmpp://marc.quinton@jabber.org
Hors ligne
#11 Le 04/07/2007, à 22:03
- Link31
Re : Récuperer adresse du stream lu par vlc
sinon voila le resultat que le script me sort
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1522 100 1522 0 0 4855 0 --:--:-- --:--:-- --:--:-- 165k
Mais peut etre que le fait que je ne sois pas connecté sur leneuf y est pour quelque chose ?
Le résultat est dans la variable FLUX (echo $FLUX).
Il faut être connecté chez Neuf ou Cegetel pour que ça fonctionne.
Hors ligne
#12 Le 04/07/2007, à 22:07
- Link31
Re : Récuperer adresse du stream lu par vlc
J'ai pas tout compris le code.
curl http://televisionsurpc.neuf.fr/televisionsurpc.m3u : télécharge et envoie le m3u dans le pipe
grep $CHAINE : isole les lignes qui contiennent le nom de la chaîne à regarder
`curl http://televisionsurpc.neuf.fr/televisionsurpc.m3u | grep $CHAINE` est remplacé par le résultat du grep
Le deuxième curl télécharge l'URL correspondant à ce résultat.
Le grep REF isole les lignes contenant REF.
head -n1 ne conserve que la première occurence.
On récupère l'URL définitif grâce à un cut.
Le $() est là pour échapper des éventuels caractères gênants.
Hors ligne
#13 Le 04/07/2007, à 22:30
- Sleipnir
Re : Récuperer adresse du stream lu par vlc
Le $() est là pour échapper des éventuels caractères gênants.
Ce pu... de $ , on le mets a toutes les sauces! J'ai beaucoup de chose apprendre encore!
Merci d'avoir détaillé, ça aide bien quand on débute
Ce code permet d'aller chercher le fichiers m3u, etc etc... Mais j'aurais aimer pouvoir récupérer le flux qui est en train d'être lu sur vlc au lancement du script, ça permettrait d'enregistrer toutes sorte de flux, pas seulement le neuf .
Comme dit marc31, linux c'est magique, ça devrait donc être possible de récupérer ce maudit flux !
Dernière modification par Sleipnir (Le 04/07/2007, à 22:32)
Hors ligne
#14 Le 04/07/2007, à 22:49
- Link31
Re : Récuperer adresse du stream lu par vlc
Ben le flux, soit tu en connais l'adresse donc pas besoin de la récupérer depuis VLC, soit elle est dans une playlist m3u et il suffit de l'en extraire avec curl et quelques grep, cut, etc.
Hors ligne
#15 Le 04/07/2007, à 23:06
- Sleipnir
Re : Récuperer adresse du stream lu par vlc
Je suis d'accord, mais si c'était possible de récupérer l'adresse, ça éviterais de devoir entrer toutes les adresses de flux a l'avance, ça permettrais, comme la touche enregistrement rapide de nos vieux magnétoscopes, d'enregistrer ce qui est lu par vlc, même les chaînes, ou radio non référencées. Le script propose donc d'enregistrer ce qui passe, pas besoin de sélectionner dans une liste, plus simple pour tout le monde.
Hors ligne
#16 Le 04/07/2007, à 23:22
- Link31
Re : Récuperer adresse du stream lu par vlc
Et en analysant les messages que VLC affiche dans la console ?
Hors ligne
#17 Le 04/07/2007, à 23:44
- Sleipnir
Re : Récuperer adresse du stream lu par vlc
Vlc ne dit rien d'intéressant . Aucune adresses ou de truc comme ça, à moins qu'il y a un truc pour lui délier la langue ?
Hors ligne
#18 Le 05/07/2007, à 11:36
- Clop'
Re : Récuperer adresse du stream lu par vlc
vlc -v
te sortira plus d'infos, par contre je ne sais pas si ce seront les bonnes
----------------------
Linux on the Root , un site qu'il fait bon feuilleter!
----------------------
PyQtRadio, un lecteur de webradio simple et léger! Installation multi-distrib'
Hors ligne
#19 Le 05/07/2007, à 17:09
- Sleipnir
Re : Récuperer adresse du stream lu par vlc
vlc - v rends vlc plus bavard mais rien d'intéressant.
Pour récupérer ce flux je pense que ça va être dur... Je vais opter pour la solution Link31, mais ça va faire un truc plus lourd.
Un kill pour éteindre vlc n'est pas terrible, ça ne finalise pas la vidéo, il faudrait faire un stop avant. Peut être avec telnet ?
Question : Peut on faire tourner plusieurs process en tache de fond dans le même script et comment on les fait revenir en avant plan ( j'ai cru lire ça quelque part, mais où ? )
Merci de votre aide
Hors ligne
#20 Le 05/07/2007, à 17:32
- marc31
Re : Récuperer adresse du stream lu par vlc
pour info, mon script php appelé freeTivi risque de marcher pour ce que tu veux faire (visualisation, mais pas enregistrement) ; i lfaut juste changer http://mafreebox.freebox.fr/freeboxtv/playlist.m3u avec l'adresse qui va bien cher toi (LeNeuf).
il faut aussi installer php-gtk. Le lecteur utilisé est mplayer de memoire, mais il serait possible de piloter vlc en mode visu ou enregistrement.
ubuntu-gutsy / ATI RC410 [Radeon Xpress 200] + Nvidia GeForce 7300 SE / wireless RaLink RT2500 / toulouse-ouest / xmpp://marc.quinton@jabber.org
Hors ligne
#21 Le 05/07/2007, à 17:33
- marc31
Re : Récuperer adresse du stream lu par vlc
et de toute facon, il est fort probable que je vais faire une evolution de freeTivi quand j'aurai un peu de temps, ou envie.
ubuntu-gutsy / ATI RC410 [Radeon Xpress 200] + Nvidia GeForce 7300 SE / wireless RaLink RT2500 / toulouse-ouest / xmpp://marc.quinton@jabber.org
Hors ligne
#22 Le 05/07/2007, à 20:03
- Link31
Re : Récuperer adresse du stream lu par vlc
Pour récupérer ce flux je pense que ça va être dur... Je vais opter pour la solution Link31, mais ça va faire un truc plus lourd.
Au contraire. Entre lancer VLC pour récupérer l'adresse du stream (en supposant que ce soit possible), et récupérer cette adresse avec deux simples curl, ma solution est bien moins lourde (sauf peut-être en terme d'écriture).
Question : Peut on faire tourner plusieurs process en tache de fond dans le même script et comment on les fait revenir en avant plan ( j'ai cru lire ça quelque part, mais où ? )
Lancer VLC en arrière-plan :
vlc &
Lancer xterm en arrière-plan :
xterm &
Remettre VLC en premier-plan :
fg %vlc
Remettre VLC en arrière-plan :
CTRL+Z, puis :
bg %vlc
Xterm en premier-plan :
fg %xterm
...
Hors ligne
#23 Le 06/07/2007, à 06:47
- marc31
Re : Récuperer adresse du stream lu par vlc
jobs liste les commandes en arriere plan, il est ainsi possible de les rappeler (en shell interactif).
sleep 50&
sleep 100&
jobs
%1
CTRL-C
jobs
cela va tuer le premier sleep. Par la suite, il y a une tache de moins dans la liste des taches (jobs).
Dernière modification par marc31 (Le 06/07/2007, à 06:48)
ubuntu-gutsy / ATI RC410 [Radeon Xpress 200] + Nvidia GeForce 7300 SE / wireless RaLink RT2500 / toulouse-ouest / xmpp://marc.quinton@jabber.org
Hors ligne