Media center Freevo

De MicElectroLinGenMet.

(Retour Accueil ou Liste des articles)

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/)


Menu principal


Fonctions actives

  • Lecture audio/divx
  • Carte TNT (lecture/enregistrement)
  • WebRadios
  • LCD
  • Météo
  • Commandes


Matériels


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.


Affichage sur LCD lors de la lecture mp3
La même lecture sous Freevo


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>


Affichage météo d'une ville


command

Permet de lancer des scripts (mieux que 'home_automation' car donne un retour)


Menu de commande (Affiche OK si commande retourne '0')


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.


Menu Maj graphes Ws2300 dans menu principal)


remind

Utiliser ici pour voir la sortie d'une commande (Relevés Station météo, Téléinfo ...)


Menu remind avec les commandes utilisées
Sortie relevés station météo Ws2300



image

Exemple d'aperçu d'une liste d'images/photos.


Vue d'une liste de photos
Vus des graphes station météo Ws2300

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)


PROBLEME: Aprés passage au tout numérique le 8 mars 2011, impossiblité de retrouver toutes les chaines à partir du fichier fréquence fr-Paris.
En fouillant sur le web, une autre méthode pour re-scanner les canaux TNT:

# apt-get install w-scan
# w_scan -ft -c FR -X > channels.conf

Quelques modifications après le scan sont nècessaires dans le fichier channels.conf pour le nom des chaines ("BFM TV(NTN)" => "BFM TV").


  • 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

Le script tv_grab_fr se base sur le site de telepoche pour télécharger les programmes mais celui-changeant régulièrement le script ne fonctionne plus maintenant.

Voir les liens suivants pour vérifier si mise à jour:

  1. http://www.lahiette.com/biboobox/download/tv_grab_fr
  2. http://www.lahiette.com/biboobox/download/tv_grab_fr_telerama (version utilisant le site de Télérama).
  3. ou le site http://www.kazer.org/ qui propose le Guide TV en téléchargement au format XMLTV.




- Script tv_grab_kazer personnel (il faut s'enregistrer sur le site pour obtenir un "id utilisateur":

$ cat tv_grab_kazer

#!/bin/bash
# Utilise Guide TV: http://www.kazer.org/
echo "tv_grab_kazer ..."
wget -q "http://www.kazer.org/gen_xml.php?u=idutilisateur" -O - > /tmp/TV.xml.tmp


- Modifier XMLTV_GRABBER dans local_conf.py

XMLTV_GRABBER = '/home/freevo/tv_grab_kazer'


- Modifier CHANNELS dans local_conf.py

TV_CHANNELS = [('TF11.kazer.org',     'TF1',          'TF1'   ),
              ('FRA2.kazer.org',     'France 2',     'France 2'      ),
              ('FRA3.kazer.org',     'France 3',     'France 3'      ),
              ('ART1.kazer.org',     'Arte',         'ARTE'  ),
              ('M61.kazer.org',     'M6',           'M6'     ),
              ('FRA5.kazer.org',     'France 5',     'France 5'        ),
              ('TMC1.kazer.org',     'TMC',          'TMC'      ),
              ('FRA4.kazer.org',    'France 4',     'France 4'    ),
              ('W91.kazer.org',    'W9',           'W9'      ),
              ('DIR1.kazer.org',   'Direct 8',     'Direct 8'      ),
              ('NT11.kazer.org',   'NT1',         'NT1'      ),
              ('NRJ1.kazer.org',   'NRJ 12',       'NRJ12'      ),
              ('EUR2.kazer.org',   'Virgin 17',  'Virgin 17'      ) ,
              ('GUL1.kazer.org',   'Gulli',  'Gulli'      )
]



  • 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


Aperçu du programme TV


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.


Vu d'un programme enregisté


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


Page du WebServer


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