mcefun.nrossen.dk

Fun with Microsoft Windows Media Center

Intro

Der er min overbevisning at hvis man kender den bagved liggende teknik så ved man også bedre hvordan man skal afhjælpe et problem i en given situation, derfor har jeg valgt at skrive alt det ned jeg ved om EPG databasen.

Men husk….

Hver gang man tilføjer funktionalitet til sit medie center, øger man risikoen for data fejl. Det gælder programmer som mit eget, Big Screen programmer, Remote Potato o.s.v.
Men man gør det jo fordi man mangler disse funtionaliteter, men man skal bare vide at det forholder sig sådan.

Hvordan virker det

Microsoft Windows Media Center’s EPG database er en simpel SQLLite database, så vidt jeg kan se. 

Selve database filen ligger i mappen
C:\ProgramData\Microsoft\eHome

image

Selve databasefilen hedder første gang mcepg2-0.db, men kan sagtens få et nyt nummer så den aktuelle kan f.eks. hedde mcepg2-11.db eller lign.
I dette eksempel er filen kun ca. 2MB stor, men en EPG fil med data ligger mellem 20 – 150 MB.

Hvad det aktive nummer er kan man finde i registry værdien her

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Media Center\Service\EPG\EPG.instance

Hvis den værdi ikke findes, svarer det til instance 0, d.v.s. så vil filen hedde MCEPG2-0.DB.
Windows Media Center laver selv en ny kopi hver gang den “opdager” en fejl i database, og forhøjer nummeret med 1. Derfor kan man sagtens finde mapper hvor der er mange kopier af databasen bare med forskellige “instans” numre.

Sammen med selve database filen er der også en mappe af samme navn, deri ligger flere ting.

image

*.MEM filerne er bare en del af databasen (tror jeg) og er ikke så interessant, men derimod er der er en undermappe som hedder “backup” som er meget interessant.

image

I “backup” mappen findes der igen flere undermapper, filerne i disse undermapper er XML filer som kan indlæses via LOADMXF tool’et. Disse filer bliver bl.a. dannet hver gang man tilføjer en ny optagelse, selve filerne hedder noget som angiver præcis hvornår backuppen er taget. Udover dette ser det ud til Medie Center laver en fil hver dag mindst. Kun de seneste tre kopier bliver gemt, d.v.s. når der kommer en ny backup, bliver der fjernet 1 hvis der er over tre.

image

Hvis man skal anvende disse filer, er det vigtigt at man anvender filer af samme navn fra alle mapperne. Disse filer indholder bl.a. dit TV setup (lineup), og indholder også de planlagte optagelser som du har (recordings) samt noget som ikke anvendes her i danmark, men som er funktionalitet for US brugere (subscriptions).
Disse XML filer er tilsammen dit grundlæggende setup for dit medie center.

Hvis Windows Media Center opdager en fejl i databasen, laver den automatisk en ny instans af databasen og henter via de seneste backup filer hele dit TV setup ind igen samt alle dine optagelser.

Recovery processen i Windows Media Center

Hvis nogen ser følgende besked når de starter Media Center så er det fordi er er foregået en recovery af databasen.

MCEError1

Selve recovery processen kan også startes manuelt, det er faktisk det som er indbygget i MCImportXMLTV GUI delen. Jeg vil her beskrive hvordan det gøres manuelt.

Som så meget andet i Media Center, er dette “bare” et baggrunds job i Opgave styringen. Selve opgaven “Task” hedder ObjectStoreRecoveryTask.

image

Det jobbet gør, er følgende.

1. Laver en ny instans af EPG databasen (Laver en ny database med 1 nummer højere end den gamle).
2. Genindlæser de seneste backup data fra “backup” folderen nævnt tidligere.
3. Henter Microsoft EPG data fra WWW og indlæser dem.

Alt i alt tager den process typisk et par minutter.

Når man så starter Windows Media Center derefter vil man få beskeden om at der er rettet i optagelses data (se billede ovenfor).

Hvilke programmer tilgår EPG databasen

Der er mange “klienter” på EPG databasen, udover selvfølgelig selve Windows Media Center.

Hvis man kigger på processer på et standard Windows Media Center som tilgår databasen, så er det følgende processer.

mcGLIDhost.exe  (DVB EPG Stream loader – “Inband guide data loader”)
mcupdate.exe  (Anvendt af mange baggrunds job, bl.a. til at hente Microsoft EPG data med)
ehShell.exe (Selve Windows Media Center)
loadmxf.exe (Windows Media Center MXF loader utility)

Hvis man installerer 3. parts programmer som

Remote Potato, så vil processen RemotePotatoService.exe til tider også gå i databasen.
Big Screen byRemote programmet vil også tilgå databasen.

Programmer som skriver i databasen, kan typisk forårsage fejl i databasen, SQLLite databasen kører ikke i transaktioner, d.v.s. står et program af midt i en opdatering, vil databasen være efterladt i en tilstand som ikke er forudsigelig = Ødelagt.
Mit program MCImportXMLTV anvender LOADMXF toolet til at indlæse data ind i databasen med.
Dette tool validerer input i filen hen af vejen, og står typisk af ved bestemte %, afh. af hvad der galt med databasen eller data.

LOADMXF

Jeg har fundet en beskrivelse her der lidt mere i detailjer forklarer hvad der kan være glat afh. hvilken % LOADMXF når til.

http://bigscreenglobal.com/bgepgsupport.aspx?PID=BSEV1&ID=TS3


Kort fortalt siger den følgende

Hvis LOADMXF fejler ved <20%
Databasen er korrupt af ukendte årsager, typisk vil du også få problemer med at selve Media Center crasher når den tilgår EPG data.

Hvis LOADMXF fejler mellem 80-90%
Dette tyder på der faktisk er et problem med de data from hentes ind, hvis det er fra MCImportXMLTV, så tyder det på at disse data af en eller anden grund ikke er korrekte. Typisk kan dette være fejl i ONTV’s data eller i programmet.

Hvis LOADMXF fejler ved ~97%
Dette er typisk en fejl der ses hvis man endnu ikke har kørt TV Setup i Medie Center, da der så ikke findes en “MergedLineup” relation i databasen.

Hvordan nulstiller man SÅ EPG databasen

Før man prøver at nulstille databasen, skal man selvfølgelig sikre sig alle programmer som tilgår databasen også er lukket. Disse programmer er nævnt i et andet afsnitt her i teksten.

Hel frisk database

Det er meget enkelt at komme tilbage til initielt setup igen. D.v.s. hvor man skal køre TV setup igen.

  1. Slet database filen mcepg2-<n>.DB samt biblioteket af samme navn under mappen C:\Programdata\Microsoft\eHome.

  2. Start Windows Media Center og kør TV Setup igen.

Genopret database (Rebuild) (Virker ikke med DVBLogic’s TVSource)

  1. Gå i opgave styringen find mappen “\Microsoft\Windows\Media Center” og find opgaven “ObjectStoreRecoveryTask”
  2. Højre klik og kør denne opgave. Vent 5-10 min og start så Windows Media Center og check om alt er ok.
  3. Hvis den IKKE kunne recover din lineup, så er du også tilbage til initiel setup, d.v.s. så skal du køre TV setup igen.

Genopret database (Rebuild) (Med DVBLogic’s TV Source)

TVSource “snyder” databasen lidt, og derfor virker den alm. recover ikke, da deres Addin “overskriver” nogen data uden at Medie Centeret ved det.
Så da er det nødvendigt at følge nedenstående guide istedetfor.

  1. Tag en kopi af XML backup filerne (dem du ønsker at genetablere), det er tre filer der hedder det samme i hver sin mappe (Se andet afsnit for en nærmere omtale af disse filer).
  2. Udfør alle punkter i “Hel frisk database”. i TV Setup skal du bare tilføje de fire virtuelle tunere og vælge at gennemføre guide.
  3. Luk Windows Media Center ned og start det op igen, nu vil DVBLogic’s addin foreslå at opdatere kanaler, sig ja til dette. Dette skal gerne gå godt.
  4. Luk Windows Media Center igen.
  5. Start nu en kommando prompt
  6. Kør kommando
    C:\Windows\ehome\loadmxf –i <sti-til-backup-filer>\lineup\20110220_133433
    Dette vil restore din lineup (Dine valgte kanaler)
  7. Kør kommando
    C:\Windows\ehome\loadmxf –i <sti-til-backup-filer>\recordings\20110220_133433
    Dette vil restore din planlagte optagelser
  8. Kør kommando
    C:\Windows\ehome\loadmxf –i <sti-til-backup-filer>\subscriptions\20110220_133433
    Dette vil restore dine subscriptions (USA ting, men gør det alligevel)


Ved genoprettelse af database, burde alt TV Setup være intakt samt alt andet tuner setup.
BEMÆRK, ingen EPG data er hentet ind endnu, ud over Microsoft, d.v.s. hvis du anvender ONTV data via mit program, skal dette hentes ind nu, inden man kan se data i guiden.

Data fra mit program kan loades via kommandoen
(Seneste data generet af mit tool)


C:\windows\ehome\loadmxf –i c:\programdata\nrsoft\mcimportxmltv\mxf_output.xml

 

Simpel Backup metode (Fil backup)

Det er muligt at kopiere database filerne til et sikkert sted.
Man kan så køre dem tilbage ved at overskrive de “dårlige” versioner.
Jeg har planer om at lave et tool, der kan gøre dette automatisk for en hver nat eller “on demand”. Mere om det senere…

Volume shadow copies (Gendannelses punkter)

En anden simpel mulighed som foregår helt af sig selv er at anvende en gammel “god” kopi af filen, hvis f.eks. din EPG database gik “ned” om natten, Så kan man jo prøve at anvende en tidligere udgave. Den vil selvfølgelig ikke indeholde ændrer efter det tidspunkt den er taget, de ting er tabt, men det kan da spare en for noget arbejde.

image



MC-TVConverter

En gang imellem har man brug for at ændre en optagelse til et andet format, f.eks. for at få det over på sin MP4 afspiller, eller for at brænde det til DVD.
Til dette formål findes der et gratis program der hedder MC-TVConverter. Programmet kan hentes her.
Programmet kræver Java, så sørg for at hente den nyeste Java fra www.java.com.


Programmet har sin egen GUI, men er ellers frontend til en del andre utilities, som anvendes i konverteringen afh. hvilket format man ønsker.
image

Processen er simpel for at konvertere en enkelt fil, man trykker “Select files”, finde de filer som skal konverteres og tilføjer dem i listen.
Inden man starter er det en god ide lige at checke indstillinger (Via tandhjul knappen foroven). Her angives et output bibliotek som anvendes til de færdige filer. Måske skal det lige ændres inden man starter.

image

 

Undertekster

En af grundende til jeg syntes dette program er interessant er at det ifg. dokumentationen kan skille undertekster fra i en .SRT fil, hvis man vælger at demux filen til de rå streams eller convertere til .TS format.
Bemærk, det gælder selvfølgelig kun på de kanaler som sender undertekster i en seperat stream, og ikke indlejret i selve billedet. 
Så snart filen er i .TS formatet, er det straks meget nemmere at få den incl. undertekster med på en DVD.
Den indbyggede “Brænd til DVD” i Media Center tager nemlig IKKE undertekster med hvis man laver en DVD af en optagelse.

Det er alt for nu, jeg vil udvide denne post når jeg har arbejdet lidt mere med toolet.



Ifb. med at søge efter en løsning på EPG mapping problemet som nogen oplever, har jeg leget lidt med Windows Media Center EPG API i .NET. Det har resulteret i følgende lille utility der måske kan hjælpe nogen med at få en oversigt over hvilken type EPG man har mappet per kanal. 

VIGTIGT:

Hvis man anvender HDHomerun eller anden tuner direkte i Medie Center skal man være opmærksom på Inband som default er slået til. D.v.s. de EPG data som kommer ind via DVB signalet lægges ind i databasen, samtidig ser det ud til at kanaler's EPG stream remappes samtidig. Løsningen ser ud til at slå Inband fra på alle de kanaler som man mapper til data fra XMLTV feed.
Man kan teste om man oplever dette fænomen ved at gøre følgende.

1. Mappe alle de ønskede kanaler til XMLTV Feed
2. Checke via dette tool, at der er ONTV logo på disse feeds
3. Start Live-TV og lad det køre noget tid
4. Trykke "Refresh" i dette tool og checke om nogen kanaler er tilbage til en ServiceID ala !Generated!..., hvis de er det er det sandsynligvis Inband data som er årsagen til dette.

(Tak til humperdink for denne observation)


image

Programmet kan hentes her [Downloads: 920]  (Windows 7 version)

Koden anvender namespace Microsoft.MediaCenter.TV.Epg til at vise disse data, første felt er så en fotolkning af teksten “ServiceID”.

Jeg har selv bemærket at man nogen gange skal vælge EPG stream to gange for at det slår igennem, så den sikre måde er gøre følgende steps for at vælge EPG stream.

1. Rediger Kanal –> Rediger Oversigter –> Vælg Brug Oversigter fra Programudbyder
2. Vælg Rediger Oversigter igen, og vælg denne gang den ønskede EPG stream
3. Vælg Gem

Disse steps kan gentages hvis Media Center ikke accepterer det første gang. Man kan så bruge programmet her til at få bekræftet om Media Centeret har gemt indstillingen.


-------------------------------


Til den kode interesserede så er nedenfor VB.NET koden som den i simpel form kan se ud.
Der skal være en reference til c:\windows\ehome\ehRecObj.dll for at tilgå dette namespace.

Dim oLineup As Microsoft.MediaCenter.TV.Epg.Lineup
Dim oCallSigns As System.Collections.Generic.IDictionary(Of String, String)

oLineup = New Lineup
oCallSigns = oLineup.GetCallSigns
For Each oCallSign In oCallSigns
Console.WriteLine(oCallSign)
Next



Det er ikke for at starte nogen format diskussion men i mit medie center, tillades der ikke MP3 eller andre “lossy” komprimerende musik filer. Jeg har valgt at bruge Windows Media Audio Lossless formatet, så alle mine original CD’ere er indlæst i det format, det betyder så at hver CD typisk fylder omkring 250-350MB.
Det fylder dog mindre end WAV og fordelen frem for ren WAV (PCM) formatet er at man kan lægge alle attributter såsom album titel o.s.v. direkte i WMA filen.

music_screen_2_small

Her ses f.eks. kunstner navn samt min kategorisering (4 stjerner) af musikken.

MEN……, hvad nu hvis man skal bruge musikken på portable enheder ?

Ulemperne ved Lossless WMA udover størrelsen, er selvfølgelig at mange MP3 afspillere ikke understøtter dette format. Derfor har jeg lavet et lille program til mit medie center, der hver nat “spejler” alt min musik til en folder på min NAS server, med samme mappe struktur som mit originale musik er lagt. Desuden gør programmet også det at det sammenligner fildato, så hvis jeg f.eks. ændrer en tekst eller en stjerne markering på mit originale musik, så vil den om natten opdatere MP3 spejlet med disse ændringer. Det samme gælder for album cover hvis dette opdateres.

Jeg har så valgt at lægge alt ind i selve MP3 filen, d.v.s. alle relevante attributter (tags) overføres inkl. album cover, direkte ind i MP3 filen.
Så er det nemt at kopiere disse filer til sin MP3 afspiller.

Programmet anvender Windows Medie Format SDK til at hente data, og LAME encoderen til at lave MP3 filen med, og jeg har lavet et nyt program der bruges til at lægge alle tags ind med, incl. album cover og “popularity” rating (Antal stjerner), dette program anvender id3lib.

image

Programmet er pt. stadig under udvikling, så derfor er det ikke tilgængeligt for download.



Måneds liste

Sign in