Media center Freevo
De MicElectroLinGenMet.
Sommaire |
Description
Freevo est un logiciel libre open source sous licence GPL, disponible pour GNU/Linux et BSD. Il permet de transformer un ordinateur en un centre de divertissement multimédia et d'enregistrer des vidéos (Personal Video Recorder).
(Source : Wikipedia)
(Documentation: http://doc.freevo.org/)
Fonctions actives
- Lecture audio/divx
- Carte TNT (lecture/enregistrement)
- WebRadios
- LCD
- Météo
- Commandes
Matériels
- Carte TNT Terratec Cinergy 1400 DVB-T, fournie avec sa télécommande (compatible LIRC)
- LCD compatible lcdproc
- Affichage de FREEVO sur TV (Xorg configuré en DualHead) avec une carte graphique Nvidia.
Plugins activés
lcd (lcdproc)
Le LCD permet de se déplacer dans les menus et lancer une lecture audio sans avoir besoin de l'affichage TV.
oneclick (Météo)
Utiliser le lien http://xoap.weather.com/search/search?where=ville_a_chercher pour retrouver le code d'une ville:
http://xoap.weather.com/search/search?where=nancy
<search ver="3.0"> <loc id="FRXX5361" type="1">Nancy, France</loc> <loc id="USKY1187" type="1">Nancy, KY</loc> <loc id="FRXX0115" type="1">Nancy/Essey, France</loc> <loc id="FRXX1581" type="1">Saulxures-les-Nancy, France</loc> <loc id="FRXX2280" type="1">Laneuveville-devant-Nancy, France</loc> <loc id="FRXX2358" type="1">Essey-les-Nancy, France</loc> <loc id="FRXX3004" type="1">Villers-les-Nancy, France</loc> <loc id="FRXX5084" type="1">Nancy-sur-Cluses, France</loc> <loc id="FRXX6724" type="1">Vandoeuvre-les-Nancy, France</loc> </search>
command
Permet de lancer des scripts (mieux que 'home_automation' car donne un retour)
Les scripts doivent être ajoutés dans un fichier fxd placé dans le répertoire indiqué dans la variable "COMMANDS_DIR" du fichier de configuration.
Exemple avec deux fichiers Domotique.fxd et Ws2300.fxd placés dans le répertoire. (Voir correspondance sur photo ci-dessus):
- Domotique.fxd
<?xml version="1.0" ?> <freevo> <command title="Chauffage mode programmateur"> <cmd>/usr/local/bin/i2centree 'chauffage prog'</cmd> <info> <content>Chauffage mode programmateur</content> </info> </command> <command title="Chauffage mode programmateur auto"> <cmd>/usr/local/bin/i2centree 'chauffage pgauto'</cmd> <info> <content>Chauffage mode programmateur auto</content> </info> </command> <command title="Chauffage mode hors-gel"> <cmd>/usr/local/bin/i2centree 'chauffage horsgel'</cmd> <info> <content>Chauffage mode hors-gel</content> </info> </command> <command title="Chauffage mode hors-gel auto"> <cmd>/usr/local/bin/i2centree 'chauffage hgauto'</cmd> <info> <content>Chauffage mode hors-gel auto</content> </info> </command> <command title="Chauffage mode desactive"> <cmd>/usr/local/bin/i2centree 'chauffage desactive'</cmd> <info> <content>Chauffage mode desactive</content> </info> </command> </freevo>
- Ws2300.fxd
<?xml version="1.0" ?> <freevo> <command title="Maj graphes Ws2300"> <cmd>/home/freevo/bin/maj_jpgraph_ws2300.sh</cmd> <info> <content>Mise a jour JpGraphes Ws2300</content> </info> </command> </freevo>
CommandMainMenuItem
Idem 'command' mais apparait dans menu principal.
Le plugin est configuré avec le fichier 'Ws2300.fxd' vue ci-dessus.
remind
Utiliser ici pour voir la sortie d'une commande (Relevés Station météo, Téléinfo ...)
image
Exemple d'aperçu d'une liste d'images/photos.
Le menu Command "Maj graphes Ws2300" permet de mettre à jour les graphes météo.
audio
Pour les fichiers mp3, les pochettes de disques peuvent se déposer sous le répertoire /home/freevo/.freevo/cache/vfs/...
Voir aussi le plugin 'audio.coversearch' (Amazone) pour la recherche de pochettes.
Les liens WebRadios fournis ne semblent pas fonctionner. Voir le site http://www.shoutcast.com/ pour chercher des radios qui fonctionnent avec mplayer ou xine.
Il suffira ensuite de rajouter les liens dans le fichier webradio.fxd
Configuration
Système
Freevo 1.8.1 sous Debian SID.
- Fichiers de configuration par défaut
/etc/freevo/lircrc /etc/freevo/local_conf.py /usr/share/freevo/freevo_config.py ~/.freevo/*
Spécifique Debian:
/etc/default/freevo /etc/freevo/debconf.sh /etc/freevo/debconf.py
Scripts RC Debian:
/etc/init.d/freevo_encodingserver /etc/init.d/freevo_recordserver /etc/init.d/freevo_rssserver /etc/init.d/freevo_webserver /etc/init.d/freevo_xserver
LCD
Le package lcdproc (LCD display driver daemon and clients) doit être installé/configuré (/etc/lcdproc.conf) pour un afficheur lcd compatible (voir le site lcdproc)
Le daemon /usr/sbin/LCDd doir être lancé.
$ ps -ef|grep -i lcd nobody 26377 1 0 Mar28 ? 00:09:35 /usr/sbin/LCDd -s 1 -f -c /etc/LCDd.conf
TV
- Configuration Xorg
Affichage TV sur un DISPLAY différent. L'écran LCD est configuré comme "screen 0" et la TV commme "screen 1".
Lien sur le fichier: xorg-GeForce6200-dualhead.conf pour une carte nvidia.
- Lancement Freevo sur la TV
export DISPLAY=:0.1 /usr/bin/freevo start
TNT
- Configuration matériel
Pour les cartes DVB-x, une fois le bon module chargé, les "devices" de la 1ière carte doivent apparaitre sous
$ l /dev/dvb/adapter0/ total 0 crw-rw---- 1 root video 212, 4 mar 25 15:41 demux0 crw-rw---- 1 root video 212, 5 mar 25 15:41 dvr0 crw-rw---- 1 root video 212, 3 mar 25 15:41 frontend0 crw-rw---- 1 root video 212, 7 mar 25 15:41 net0
L'utilisateur utilisant freevo doit appartenir au groupe "video" pour accéder aux devices de la carte DVB.
- Création du fichier "channels"
A partir des "Frequences Paris":
Fichier fr-Paris fourni avec package dvb-utils. $ scan /usr/share/dvb/dvb-t/fr-Paris | tee mychannels.conf $ cp mychannels.conf ~/.mplayer/channels.conf (mplayer) $ cp mychannels.conf ~/.xine/channels.conf (xine)
- Tests
$ xine dvb://W9 $ mplayer dvb://"BFM TV"
LIRC
- Fichier lircrc
Exemple de fichier lircrc pour la télécommande Terratec.
Test de la configuration:
# ircat --config=~/.freevo/lircrc freevo
Commandes utilisées sous FREEVO:
POWER CH- CH+ VOL- VOL+ 0-9 DISPLAY ENTER DOWN UP LEFT RIGHT FFWD REW PAUSE PLAY STOP REC EJECT TITLE
- irexec
Utiliser pour lancer Freevo si appuie touche Power de la télécommande:
/usr/bin/irexec -d ~/.freevo/lircrc.power
$ cat ~/.freevo/lircrc.power
begin
prog = irexec
button = Power
config = export DISPLAY=:0.1 ; /usr/bin/freevo start
end
Programmes TV
- Installation du package: xmltv (logiciel permettant de télécharger les programmes TV de sites Web)
# apt-get install xmltv xmltv-gui xmltv-util
- Configuration des chaines
$ tv_grab_fr --configure
- Test
$ tv_grab_fr
- Utilisation sous Freevo (Lancement périodique avec cron)
0 1 * * * /usr/bin/freevo tv_grab
Le programme TV se trouve dans ~/.freevo/static/TV.xml
- Page programmes sous Freevo
RECORDSERVER
Lancement du RecordServer avec cette commande:
/usr/bin/freevo recordserver start &
(Sous Debian, il est possible de le lancer au boot avec le script /etc/init.d en tant que user freevo, si activé dans /etc/default/freevo ou /etc/freevo/debconf.sh)
Pour lancer un enregistrement, il suffit de choisir une émission dans le programme et de l'activer (OK) pour que Freevo demande si on souhaite l'enregistrer.
Pour une émission déjà en cours, il faut passer par le menu "ENTREE" et sélectionner enregistrement, sinon il visionne l'émission.
WEBSERVER
Si le Webserver de Freevo est activé, celui-ci sera accessible à la page et le port indiqué dans le fichier de configuration:
http://localhost:8090
Commande par le réseau
Lorsque la variable ENABLE_NETWORK_REMOTE est activée (sa valeur à 1) dans le fichier de configuration, Freevo écoute sur le port réseau UDP 16310.
Il exécute ensuite toutes les commandes qui lui sont envoyées par ce port (voir source).
Freevo propose une télécommande virtuelle par interface graphique (remote.py), qui implémente ses commandes, et qui utilise l'interface réseau.
/usr/share/pyshared/freevo/helpers/remote.py
FREEVO
Avant le premier lancement de Freevo, il faudra lancer la commande ci-dessous, pour créer le cache des fichiers medias dans "~/.freevo/cache".
freevo cache
Ci-dessous fichier de configuration local_conf.py
CONFIG_VERSION = 5.24 # 'VOL', 'PCM' 'OGAIN' etc. # volume and mute use different controls START_FULLSCREEN_X = 0 # Start in fullscreen mode if using x11 or xv. ROM_DRIVES = [ ('/media/cdrom', '/dev/cdrom', 'DVD/CD') ] ROM_SPEED = 8 EVENT_DEVS = [] USE_NETWORK = 1 CACHE_IMAGES = 1 HEADLINES_LOCATIONS = [ ("LinuxFr", "http://linuxfr.org/backend.rss"), ("LinuxFrench", "http://www.linuxfrench.net/backend.php"), ('Freevo file releases', 'http://sourceforge.net/export/rss2_projfiles.php?group_id=46652'), ('Wetter Netzeitung.de','http://www.netzeitung.de/export/news/rss/wetter.xml'), ('Heise News','http://www.heise.de/newsticker/heise.rdf'), ('Heise Security','http://www.heise.de/security/news/news.rdf'), ] VIDEO_ITEMS = [ ('Films', '/home/freevo/medias/films'), ('Tnt', '/home/freevo/medias/tnt'), ] VIDEO_XINE_SUFFIX = [ 'avi', 'mpg', 'mpeg', 'rm', 'divx', 'ogm', 'asf', 'm2v', 'm2p', 'mp4', 'mov', 'cue', 'm2t' ] VIDEO_PREFERED_PLAYER = 'mplayer' AUDIO_ITEMS = [ ('Musiques', '/home/freevo/medias/musics'), ('Radios Web', '/home/freevo/webradio.fxd') ] AUDIO_SUFFIX = [ 'mp3', 'ogg', 'wav','m4a', 'wma', 'aac', 'flac', 'mka' ] AUDIO_PREFERED_PLAYER = 'mplayer' IMAGE_ITEMS = [ ('Photos', '/home/freevo/medias/Photos'), ('Electroniques', '/home/freevo/medias/elec/photos'), ('Ws2300', '/home/freevo/medias/ws2300/ws2300_jpgraph'), ] IMAGE_SUFFIX = [ 'jpg','gif','png','jpeg','bmp','tiff','psd' ] IMAGEVIEWER_BLEND_MODE = 0 IMAGEVIEWER_OSD = [ # First OSD info [ (_('Title')+': ', 'name'), (_('Description')+': ','description'), (_('Author')+': ', 'author') ], # Second OSD info [ (_('Title')+': ', 'name'), (_('Date')+': ' , 'date'), ('W:', 'width'), ('H:', 'height'), (_('Model')+': ', 'hardware'), (_('Software')+': ', 'software') ], # Third OSD info [ (_('Comment')+': ', 'COM') , (_('Comment')+': ', 'marker') ] ] IMAGEVIEWER_DURATION = 4 OSD_EXTRA_FONT_PATH = [ '/usr/share/fonts/truetype/' ] OSD_FONT_ALIASES = { 'arial_bold.ttf' : 'VeraBd.ttf' } OSD_BUSYICON_TIMER = (0.7, 200) LIRCRC = '/home/freevo/lircrc' XINE_VO_DEV = 'xv' XINE_COMMAND = '%s --auto-play=fq --hide-gui --borderless --geometry %sx%s+0+0 --no-splash' % \ (CONF.xine, CONF.width, CONF.height) XINE_ARGS_DEF = "--no-lirc --post='pp:quality=10;expand'" TV_RECORD_DIR = '/home/freevo/medias/tnt' VIDEO_SHOW_DATA_DIR = '/home/freevo/medias/tnt'' TV_RECORD_FILE_MASK = '%(title)s %(progname)s %%d%%m %%H:%%M' RECORDSERVER_IP = 'localhost' RECORDSERVER_PORT = 18001 RECORDSERVER_SECRET = 'xxxxxxxx' TV_RECORD_PADDING_PRE = 300 TV_RECORD_PADDING_POST = 600 VCR_CMD = ( CONF.mencoder + ' ' + 'dvb://"%(channel)s"' + ' -ovc copy -oac copy ' + # Direct stream copy ' -idx ' + # Fix idx '-endpos %(seconds)s ' + # only mencoder uses this so do it here. '-o %(filename)s ' ) # Filled in by Freevo TV_VIDEO_GROUPS = [ VideoGroup(vdev='/dev/dvb/adapter0', #We don't need to point this at the actual frontend adev=None, input_type='tuner', input_num=1, group_type = 'dvb', record_group=None, desc='DVB Viewer'), ] TV_CHANNELS = [('C1.telepoche.com', 'TF1', 'TF1' ), ('C2.telepoche.com', 'France 2', 'France 2' ), ('C3.telepoche.com', 'France 3', 'France 3' ), ('C4.telepoche.com', 'Canal+', 'CANAL+' ), ('C5.telepoche.com', 'Arte', 'ARTE' ), ('C6.telepoche.com', 'M6', 'M6' ), ('C7.telepoche.com', 'France 5', 'France 5' ), ('C9.telepoche.com', 'TMC', 'TMC' ), ('C28.telepoche.com', 'France 4', 'France 4' ), ('C38.telepoche.com', 'W9', 'W9' ), ('C122.telepoche.com', 'i>TELE', 'i>TELE' ), ('C167.telepoche.com', 'Direct 8', 'Direct 8' ), ('C168.telepoche.com', 'NT1', 'NT1' ), ('C169.telepoche.com', 'NRJ 12', 'NRJ12' ), ('C170.telepoche.com', 'LCP', 'LCP' ), ('C194.telepoche.com', 'BFM TV', 'BFM TV' ) , ('C193.telepoche.com', 'Virgin 17', 'Virgin 17' ) , ('C195.telepoche.com', 'Gulli', 'Gulli' ) ] XMLTV_GRABBER = 'tv_grab_fr' plugin.activate('www') WEBSERVER_PORT = 8090 WWW_USERS = { "dan" : "xxxxxxxx", "admin" : "xxxxxxxx" } ENABLE_NETWORK_REMOTE = 1 REMOTE_CONTROL_HOST = '127.0.0.1' REMOTE_CONTROL_PORT = 16310 CLOCK_FORMAT = '%a %d %b %H:%M' plugin.activate('audio.coversearch', args=('15G92M15Z1D4M20WYZG2',) ) AMAZON_LOCALE = 'fr' AMAZON_QUERY_ENCODING = 'iso-8859-15' plugin.activate('oneclick', level=55) ONECLICK_LOCATIONS = [ ("FRXX0106", True, None, "Versailles (78)"), ("FRXX0037", True, None, "Dreux (28)"), ("FRXX5361", True, None, "Nancy (54)"), ] ONECLICK_URL_MAP = 'http://www.weather.com/weather/map/%s?from=LAPmaps' # Ne fonctionne pas ! plugin.activate( 'lcd' ) plugin.activate('command', level=70) COMMANDS_DIR = '/home/freevo/Commands' plugin.activate('command.CommandMainMenuItem', args=('/home/freevo/Commands/Ws2300.fxd', ), level=72) plugin.activate('remind', level=75) REMINDERS = [ ('/usr/local/bin/ws2300-mysql.pl', 'Ws2300', 0, ''), ('/usr/local/bin/i2centree "chauffage status"', 'Mode chauffage', 0, ''), ('/home/freevo/bin/lastdatateleinfo.sh', 'Teleinfo', 0, ''), ('/usr/bin/sensors', 'Senseurs CM', 0, '') ] LOGGING = logging.DEBUG LOGGING_RECORDSERVER = logging.DEBUG DEBUG = 1
Fichier sans les commentaires obtenu avec:
$ grep -Ev "^#|^$" local_conf.py > local_conf.py.txt
Problème
- Freevo et Samba
Les vidéos enregistrées ont un nom long lisible sous Linux. Le répertoire dans lequel elles sont enregistrées est partagé sous Samba.
Le problème c'est que le nom des vidéos est sous forme DOS soit 8+3 caractères vu des machines windows du réseau. mais cela ne le fait que pour freevo. Si je crée un fichier dans ce répertoire avec un nom long, celui-ci apparait normalement.
Vue de Linux:
$ ls -1 medias/tnt/*.avi medias/tnt/Conquete_Lune_cinq_2408_21:20.avi medias/tnt/Le_module_lunaire_A_la_conqu_te_de_la_Lune_1708_21:30.avi medias/tnt/L_ordinateur_de_navigation_A_la_conqu_te_de_la_Lune_1008_21:25.avi
Vu de Windows:
> medias/tnt/CKYVQ7~H.AVI > medias/tnt/LF5N06~S.AVI > medias/tnt/LHV202~R.AVI
Option à ajouter ou changer dans smb.conf dans la section [global]:
mangled names = No
Liens Internet
- http://doc.freevo.org/
- http://www.lahiette.com/biboobox
- http://www.unixgarden.com/index.php/programmation/freevo-controles-avances
- http://www.unixgarden.com/index.php/audio-video/programmation-d%E2%80%99un-greffon-pour-freevo
