You are here

Freevo configureren

Dit document moet nog worden nagelopen... ik heb hem zo van mijn oude website in de nieuwe geplakt, en ben dus nog bezig de boel een beetje mooi op te maken en na te lopen.

Omdat het bij mij behoorlijk wat frustraties heeft opgewekt, beschrijf ik in dit document hoe ik Freevo naar mijn wensen draaiende heb gekregen. Freevo heeft geen gemakkelijk configuratiepaneel, maar moet volledig vanuit configuratie-bestanden worden geconfigureerd.

Voor het gemak heb ik het even in de volgende koppen onder verdeeld:







Installatie

Installatie is behoorlijk simpel, ik heb op mijn machine gekozen voor Mandriva Linux.

Met Mandriva's urpmi systeem kon Freevo met 1 enkel commando worden geinstalleerd:

michel@freevo:~$ urpmi freevo

Let wel, je hebt voor installatie via urpmi wel de contrib-sources nodig, en voor zaken als DVD ondersteuning zijn ook de plf-sources aan te raden.

Hoe je deze aan jouw Mandriva installatie kunt toevoegen kun je
hier bekijken.

Om de laatste versie van Freevo te kunnen installeren, is het handig de source van de Nederlandse MandrivaClub te installeren. Hier zijn meestal pakketten voor de laatste versie beschikbaar.
Zie de Wiki van Freevo.org voor meer info.

Nu kun je met jouw favoriete text-editor het bestand /etc/freevo/local_conf.py aanpassen, om ervoor te zorgen dat Freevo gaat doen wat jij wilt.

Mocht je Freevo als gebruiker willen starten, is het handig de gebruiker in kwestie even aan de groepen 'audio' en 'cdrom' toe te voegen, zodat de gebruiker alle toegang tot de geluidskaart en de cd/dvd-speler krijgt.
Dit kun je bijvoorbeeld doen met het usermod commando:

# usermod -G audio,cdrom michel

Waarin 'michel' in dit voorbeeld de gebruikersnaam van de user is die Freevo moet gaan bedienen.







Joystick ondersteuning

Het eerste wat ik belangrijk vond was ondersteuning voor mijn Joystick, omdat ik die graag wilde gaan gebruiken als afstandsbediening.

Ik heb speciaal hiervoor een draadloze gamepad aangeschaft.



De Freevo Wiki
geeft al wat informatie over het gebruik van een joystick, en met die informatie kom je al een heel eind.

In het bestand "/etc/freevo/freevo_conf.py", is het de bedoeling dat je de joystick plugin inschakelt, door de volgende regel toe te voegen:

plugin.activate("joy")

Daarnaast wil Freevo graag van je weten welke joystick je gaat gebruiken.

Dit doe je door in het zelfde bestand de volgende regel te plaatsen:

JOY_DEV = 1


Hiermee geef je aan dat je "/dev/js0" wilt gaan gebruiken voor Freevo. (voor "/dev/js1" gebruik je dus "JOY_DEV = 2" enzovoort).

Nu is het de bedoeling dat je gaat aangeven wat je met welke knop van de joystick wilt kunnen bedienen.

Dit gebeurt onder het kopje "JOY_CMDS".

zelf heb ik er het volgende van gemaakt:

JOY_CMDS={
   'up' : 'UP',
   'down' : 'DOWN',
   'left' : 'LEFT',
   'right' : 'RIGHT',
   'button 1': 'PLAY',
   'button 2': 'STOP',
   'button 3': 'PAUSE',
   'button 4': 'ENTER',
   'button 6': 'SELECT',
   'button 7': 'EXIT',
}

In principe kun je alle knoppen van jouw joystick een functie geven. Functies zijn onder andere:

  • UP, DOWN, LEFT, RIGHT
  • PLAY, PAUSE, STOP
  • ENTER, SELECT, EXIT
  • DISPLAY

Dit zijn alle functies waar ik zelf bekend mee ben.


Mocht je net als ik een joystick hebben met meerdere assen, kan het handig zijn om deze even in het joy.py bestand toe te voegen. Dit bestand vind je in /usr/lib/python2.4/site-packages/freevo/plugins/
Ergens onderaan het bestand vind je de volgende regels:

            if ((data[3] == 0) & (data[1] > 16384)):
                button = 'right'
                command = config.JOY_CMDS['right']

Daaronder kun je zelf soortgelijke regels toevoegen voor de assen die jij wilt gebruiken. Ik heb de volgende regels toegevoegd:


	    if ((data[3] == 5) & (data[1]  16384)):
		button = 'down'
		command = config.JOY_CMDS['down']
	    if ((data[3] == 4) & (data[1]  16384)):
		button = 'right'
		command = config.JOY_CMDS['right']

Verder vond ik het handig om de joystick ondersteuning van MPlayer volledig uit te schakelen, dit omdat MPlayer al door Freevo wordt bediend. MPlayer vangt namelijk ook de signalen van de joystick op, waardoor iedere actie dubbel wordt uitgevoerd (1x door Freevo, 1x door MPlayer zelf).

Om dit uit te schakelen, voeg je het volgende toe aan /etc/freevo/local_conf.py:

MPLAYER_ARGS_DEF = '-nojoystick'

Nu werkt de joystick plugin verder naar behoren.

Top







De TV gids vullen

Voordat we aan de slag gaan met TV, is het handig eerst de TV gids in orde
te brengen. Voor het vullen van de TV gids gebruiken we xmltv.
Deze applicatie haalt de informatie voor alle zenders van Internet,
en maakt hier xml informatie van.

Als je Freevo vanaf rpm hebt geinstalleerd, heb je dit al op je systeem staan.

Eerst configureren we xmltv, met het commando:

$ tv_grab_nl --configure

Je krijgt nu per zender de vraag of je voor deze zender de tv-gids informatie
wilt ophalen. Deze configuratie wordt opgeslagen in ~/.xmltv/tv_grab_nl.conf.

Vervolgens kun je een xml-bestand met TV gids informatie laten vullen doormiddel
van:

$ tv_grab_nl > /tmp/TV.xml

(/tmp/TV.xml is het bestand waar Freevo standaard naar zoekt, maar ook dit is
natuurlijk in te stellen).

Om het geheel nu nog mooier te maken, kun je het ophalen van de TV gids ook door
Freevo laten doen. Echter moet Freevo dan wel eerst weten van welke 'grabber' je
gebruik wenst te maken (tv_grab_nl in mijn geval).

Het voordeel van deze methode is dat Freevo het xml-bestand nog eens nader laat
bestuderen, en zo overlappende of dubbele informatie uit het bestand filtert.

Zo kan het voorkomen dat een film bijvoorbeeld van 23.00u 's avonds tot 1.00u 's nachts
loopt. Deze begint dus op dag1 en eindigt op dag2. Hierdoor krijg je bijvoorbeeld
dat een film twee keer in het xml-bestand wordt geplaatst, een keer van 23.00u tot 0.00u,
en een keer van 0.00u tot 1.00u de volgende dag. Freevo maakt hiervan dan weer 1
item die van 23.00u tot 1.00u draait.

Om dit in te regelen, openen we het configuratiebestand local_conf.py in /etc/freevo.
Voeg daar de volgende regel aan toe:

XMLTV_GRABBER = 'tv_grab_nl'

Vervolgens kun je de TV gids vullen met het volgende commando:

$ freevo tv_grab

Om dit proces te automatiseren, zou je hier bijvoorbeeld een cron job voor kunnen maken.

Top







TV zenders inregelen

Om TV te kunnen kijken of opnemen met Freevo, moet Freevo eerst weten op welke
frequenties alle zenders te vinden zijn. Standaard kent Freevo enkel de
standaard chanlists zoals 'europe-west', maar gezien ik mijn zenders via de
kabel krijg, en niet via de lucht, gaan de frequenties in deze chanlist niet werken.

Het handigst is om simpelweg een eigen chanlist aan te maken, met een eigen naam.

Open het bestand freq.py in /usr/lib/python2.4/site-packages/freevo/tv/.

Helemaal onderaan dit bestand zie je de variabele CHANLIST staan, met daarin
een aantal standaard chanlists. Hieraan heb ik een extra chanlist toegevoegd
met de naam van mijn kabelprovier (Multikabel).

CHANLIST = {
     "nl-multikabel"    : dict(PAL_MULTIKABEL),
     "us-bcast"         : dict(NTSC_BCAST),
          .....
}

Vervolgens heb ik in het zelfde bestand een variabele PAL_MULTIKABEL gemaakt,
en deze gevuld met de frequenties voor Multikabel:

PAL_MULTIKABEL = [
    ("10", 208000 ), # Nederland 1
    ("11", 216000 ), # Nederland 2
    ("12", 224000 ), # Nederland 3
    ("25", 504000 ), # RTL 4
    ("28", 528000 ), # RTL 5
    ("31", 552000 ), # SBS 6
    ("29", 536000 ), # RTL 7
    ("24", 496000 ), # Jetix/Veronica
    ("48", 688000 ), # NET 5
    ("59", 776000 ), # Tien
    ("22", 480000 ), # RNN7
    ("63", 808000 ), # Multikabel Carrousel Kanaal
    ("S12",240000 ), # Lokale omroep/Kabelkrant
    ("7",  192000 ), # één
    ("9",  200000 ), # Ketnet/Canvas
    ("S14",256000 ), # BBC 1
    ("54", 736000 ), # BBC 2
    ("S13",248000 ), # ARD
    ("23", 488000 ), # ZDF
    ("33", 568000 ), # WDR
    ("S16",264000 ), # TV5MONDE
    ("S20",296000 ), # Regio 22
    ("46", 672000 ), # AT5
    ("6",  184000 ), # TV Noord-Holland
    ("55", 744000 ), # TMF
    ("56", 752000 ), # National Geographic/CNBC
    ("58", 768000 ), # Eurosport
    ("60", 784000 ), # Euronews
    ("62", 800000 ), # Animal Planet
    ("64", 816000 ), # Discovery Channel
    ("66", 832000 ), # MTV
    ("69", 856000 ), # CNN
    ("49", 696000 ), # BBC World
    ("32", 560000 ), # Zone Reality
    ("5",  176000 ), # TV informatiekanaal
    ("53", 728000 ), # Live Shop
    ("68", 848000 ), # Nickelodeon / The Box
    ("36", 592000 ), # Videorecorder afstelling
]

Let erop dat de frequenties in dit bestand in KHz staan, terwijl deze
over het algemeen in MHz worden aangeduid.

Ook heb ik achter een hekje de naam van de zender in kwestie geplaatst, dit is
niet noodzakelijk, maar wel handig als je over een half jaar de frequentie van
een of meerdere zenders aan moet passen ;-)

Nu Freevo de frequenties van mijn kabelboer kent, kan ik de zenders die ik
wil kunnen bekijken of opnemen in het configuratiebestand /etc/freevo/local_conf.py

gaan plaatsen.

TV_CHANNELS = [
	('1.tvgids.nl',  'Nederland 1',	'10'),
	('2.tvgids.nl',  'Nederland 2',	'11'),
	('3.tvgids.nl',  'Nederland 3',	'12'),
	('4.tvgids.nl',  'RTL 4',	'25'),
	('31.tvgids.nl', 'RTL 5',	'28'),
	('36.tvgids.nl', 'SBS 6',	'31'),
	('46.tvgids.nl', 'RTL 7',	'29'),
	('34.tvgids.nl', 'Veronica',	'24'),
	('37.tvgids.nl', 'Net 5',	'48'),
	('92.tvgids.nl', 'Tien', 	'59'),
	('5.tvgids.nl',  'BRT 1',	'7' ),
	('6.tvgids.nl',  'BRT 2',	'9' ),
	('7.tvgids.nl',  'BBC 1',	'S14'),
	('8.tvgids.nl',  'BBC 2',	'54'),
	('103.tvgids.nl','RTV-NH',	'6'),
	('29.tvgids.nl', 'Discovery',	'64'),
	('35.tvgids.nl', 'TMF',		'55'),
	('25.tvgids.nl', 'MTV', 	'66'),
]

De volgorde hierin is vrij simpel, laten we de Nederland 1 regel even gaan ontleden:


1.tvgids.nl   Dit is de benaming uit het xmltv configuratiebestand.

Deze moet overeen komen, om er zeker van te zijn dat de informatie uit de TV gids
bij de juiste zender wordt geplaatst.


Nederland 1   Dit is de naam van de zender, zoals deze in Freevo, of diens
webinterface moet worden weergegeven.


10   Dit is het kanaal.

Aan de hand van dit kanaal kijkt Freevo in freq.py naar een bijpassende frequentie,
en stemt hierop af.

Top







Een backup maken van audio cd's

Een van de voornaamste redenen voor de keuze van Freevo was voor mij, het gemakkelijk kunnen rippen en onderhouden van mijn albumcollectie.

Ikzelf bezit ruim 150 cd's, en mijn vriendin ongeveer net zo veel.  Leuk, maar het wordt snel rommelig, en is het soms even zoeken naar de cd die je wilt draaien.  

Daarnaast is het natuurlijk een voordeel dat je playlists kunt maken voor diverse gelegenheden, zoals verjaardagen.

Om cd's te kunnen rippen in Freevo, moet de plugin 'cdbackup.py' ingeschakeld worden.  Dit doe je door de volgende regel in 'local_conf.py' toe te voegen:

plugin.activate('audio.cdbackup')

Daarnaast wil de plugin graag weten, waar je de audio bestanden wilt hebben, hoe ze moeten heten, en wat het commando van cdparanoia (het cd-rip programma) is.  

Dit laat je weten met de volgende 3 regels:

AUDIO_BACKUP_DIR = '/home/michel/Muziek'
CD_RIP_PN_PREF= '%(genre)s/%(artist)s/%(album)s/%(track)s - %(song)s'
CDPAR_CMD = 'cdparanoia'

Met de volgorde van CD_RIP_PN_PREF kun je uiteraard even spelen, de hierboven genoemde volgorde
houdt in dat een bestand wordt opgeslagen als:
/home/michel/Muziek/Metal/Motörhead/Inferno/02 - Killers.wav

Ook wilde ik de audio bestanden graag met Flac comprimeren.

Dit omdat dit bestandsformaat de originele kwaliteit behoudt, en de bestanden
toch tot ongeveer 50% kleiner maakt.

Om dit te doen moest het volgende aan /etc/freevo/local_conf.py worden toegevoegd:

FLAC_CMD ='flac'
FLAC_OPTS ='-8'

Deze plugin kan eventueel ook .mp3 en .ogg bestanden voor je genereren, dit is verder redelijk goed beschreven in de
Freevo Wiki.

Top







Een backup maken van DVD films

Dit onderdeel laat nog even op zich wachten... sorry.

Reden is dat ik de dvdbackup plugin nooit goed werkend heb gekregen, en dat er vanaf 1.7 een nieuwe methode in Freevo zelf zou moeten zitten... we wachten met smart af ;)

Top







Het starten van Linux games

Freevo heeft als optie het spelen van spellen met behulp van een emulator.

Dit is dus voornamelijk bedoeld voor spellen van game consoles, zoals die van Nintendo, of Sega.

In Freevo's local_conf.py zou bijvoorbeeld onderstaande regel kunnen staan, voor het starten van Super Nintendo spellen:

GAMES_ITEMS = [('Super Nintendo Spellen', '/home/michel/games/snes/roms', 
               ('SNES', '/usr/bin/zsnes', '-m -r 2 -k 100 -cs -u -om', '', None))]

Uiteraard kun je tussen GAMES_ITEMS = [ ... ] nog een hele hoop andere emulatoren plaatsen.

Dit gaat in de volgende volgorde:

('Menu Naam', '/pad/naar/rom_bestanden', ('type', '/pad/naar/emulator', '-emulator -opties', '/pad/naar/afbeelding(optioneel)', 'bestands extentie rom-bestanden'))

Het hierboven genoemde 'type' is puur informatief voor Freevo. Als het een type is dat freevo kent, kan Freevo uit de rom bestanden onder andere de naam van de spelletje's weergeven.

Gezien we voor Linux spelletje's geen rom's gebruiken, noemen we het type 'GENERIC', zodat Freevo weet dat 'ie niet in het bestand hoeft te zoeken naar informatie.

Wellicht is er nog een nettere methode om Linux spellen te starten, maar mijn methode werkt in ieder geval, zonder al te veel moeite.

In princiepe gaan we Freevo een klein beetje voor de gek houden, door toch een map met rom-bestanden aan te geven.  Deze rom-bestanden geven we de toevoeging .tux, en zijn niet meer dan symlinks naar de uitvoerbare bestanden van de spelletje's.

Nadeel is wel dat de bestanden een nette naam moeten hebben, omdat in het menu de volledige bestandsnaam (zonder toevoeging welliswaar) als naam van het spel (omdat Freevo niets kan lezen uit het bestand).

Ik heb het als volgt in mijn local_conf.py gezet:

GAMES_ITEMS = [
   ('Linux Spellen', '/home/michel/Games/Linux/',
      ('GENERIC', '', '', '', '.tux')
   )
]

Vervolgens heb ik in /home/michel/Games/Linux/ een aantal symlinks gemaakt naar spellen.

Dit doe je op de console met de volgende opdracht (vanuit bovengenoemde map):

ln -s /usr/games/supertux SuperTux.tux

Nu wordt SuperTux netjes onder de naam 'SuperTux' weergegeven, onder het menu 'Linux Spellen'.

Top