twenty-first century code monkey

Tag: tvheadend

comskip – spring reklamerne over

Efter to måneders pause er det vist på tide at få gang i bloggen igen. Jeg må indrømme sommerpausen blev lidt længere end jeg havde planlagt, men det betyder ikke at XBMC har været skrinlagt for mit vedkommende: i starten af august blev DR NU og GameTest addon’erne opdateret.

Jeg har også fået lidt mere erfaring med mit tvheadend setup. Det der irriterer mig mest for tiden er at min OUYA har problemer med at afspille 1080i indhold. Det kommer sådan nogle lodrette striber i billedet så det er totalt ubrugeligt, men så vidt jeg er orienteret er det noget der bliver arbejdet på.
Jeg har eksperimenteret lidt med comskip som post-processing script i tvheadend. Comskip analyserer den videofil som tvheadend har optaget og laver en såkaldt EDL fil med de sektioner af videoen som indeholder reklamer. XBMC læser så EDL filen og springer reklamepauserne over. Det fungerer rimelig godt, men den fanger ikke altid det hele med de standard indstillinger jeg har fået prøvet ind til videre.

Comskip findes til Windows og der er en test version ude til Linux som jeg har brugt. Jeg har mit tvheadend setup kørende på en Debian Linux, så der skal som sædvanlig lidt krumspring til for at få det hele compilet. 🙂 Det er prisen for at vælge stabil server software frem for bleeding edge.

Først trin i vores totrinsraket er at hente den nyeste ffmpeg og compile den.

$ wget https://ffmpeg.org/releases/ffmpeg-2.0.1.tar.bz2
$ tar xf ffmpeg-2.0.1.tar.bz2
$ ./configure --prefix=/var/tmp/comskip-ffmpeg-2.0.1-install
$ make -j 4
$ make install

Jeg har valgt at angive –prefix så ffmpeg installeres et andet sted end standard. Det er så jeg undgået at “forurene” min Debian installation. Der skal muligvis installeres nogle yderligere dependencies i dit Linux system, men jeg havde allerede alt det jeg skulle bruge.

Andet trin er at hente og compile comskip.

$ wget http://www.xilka.com/xilka/source/comskip-0.93e.tar.xz
$ tar xf comskip-0.93e.tar.xz
$ PKG_CONFIG_PATH=/var/tmp/comskip-ffmpeg-2.0.1-install/lib/pkgconfig ./configure
$ make -j 4

PKG_CONFIG_PATH skal pege på den sti du angiv som –prefix tidligere. Det gør at ffmpeg findes i den sti i stedet for systemets standard sti. Herefter er det blot at køre comskip og lade den analysere video filen.

$ ./comskip /srv/tvheadend-recordings/Nyhederne.mkv

Når comskip er færdig, det kan godt tage nogle minutter, så ligger der en hel række filer med samme filnavn, men med andre filendelser, bl.a. EDL filen som jeg nævnte tidligere.

Det sidste trick er at få tvheadend til at køre comskip, når den er færdig med at optage et program. Det gøres let ved at gå ind på tvheadends webinterface, vælge Configuration og Recording og herefter indtaste Post-processor command. Jeg er stødt på nogle scripts på nettet som laver nogle forskellige ting inden de kalder comskip, men personligt kører jeg bare comskip direkte med denne command:

/usr/src/comskip-0.93e/comskip -t %f

Som nævnt fungerer det ikke perfekt, fx fanger den ikke rigtig de reklamer Discovery kører for deres andre programmer inden de rigtige reklamer kommer. Comskip har en helt række indstillinger, så det er formentlig til at tweake så det fungerer bedre.
En anden vigtig detalje er at det kræver XBMC Gotham for at EDL filerne kan hentes direkte fra tvheadend. Kører du Frodo, som jeg gør, så må du afspille filerne via en lokal disk eller et samba netværksdrev i stedet for ellers springer XBMC ikke reklamepauserne over.

Hvis nogen af jer har kendskab til en god opsætning til comskip så vil jeg mægtig gerne høre om det 🙂

Opsætning af Tvheadend

Med opsætningen af HDHomeRun Dual på plads er vi nu klar til at se på opsætningen af Tvheadend. Det anbefales at læse de tidligere indlæg for at få hele historien om mit setup og fremgangsmåde med. Det er desuden vigtigt at dvb_hdhomerun driveren er indlæst og userhdhomerun programmet kører inden du går igang med Tvheadend.

Inden vi kan komme igang med at opsætte Tvheadend skal programmet installeres. Jeg har valgt at bruge deres apt repository for at lette installationen og fremtidige opdateringer – det gøres lettest ved at bruge apt-add-repository således:

$ curl http://apt.tvheadend.org/repo.gpg.key | sudo apt-key add -
$ sudo apt-add-repository http://apt.tvheadend.org/stable
$ sudo apt-get update
$ sudo apt-get install tvheadend

Herefter kan vi kopiere den dvb-scan fil vi lavede tidligere ind i Tvheadends mappestruktur. På den måde er vi fri for at scanne efter kanaler i Tvheadend, da den kan indlæse oplysningerne fra filen.

$ cp dk-YouSee /usr/share/tvheadend/data/dvb-scan/dvb-c/dk-YouSee

Med disse indledende øvelser på plads er det tid til at åbne browseren til Tvheadends webinterface. Her kan vi blandt andet opsætte tunere, se EPG’en og planlægge optagelser. Webinterfacet findes typisk på http://localhost:9981

tvheadend-tvadapter-configuration

Første opgave i Tvheadend er at konfigurere TV Adapters under Configuration > DVB Inputs. Jeg har valgt at benytte de indstillinger i kan se på skærmbilledet herover, det virker bedst i mit setup. Det er også en god ide at ændre Adapter name, således de to adaptere ikke hedder det samme.

Herefter kan vi indlæse Multiplexes fra den dvb-scan fil vi lavede tidligere. Det gøres med et klik på Add DVB Networks by location hvorefter dk_YouSee findes i træstrukturen under Denmark. Tvheadend går så igang med at kontrollere de frekvenser vi tidligere scannede og finder samtidig de Services som de enkelte mux består af. Denne operation tager lidt tid, du kan følge med i status under Muxes awaiting initial scan som du finder i højre kolonne i skærmbilledet herover.

Når Tvheadend er færdig, dvs. antallet af Muxes awaiting initial scan er nul, kan du se de kontrollerede Multiplexes på fanebladet af samme navn og på Services fanebladet kan du de fundne kanaler. I mit tilfælde har den fundet en hel række TV og radiokanaler.

Disse services kan Tvheadend automatisk konfigurere som kanaler, som der herefter kan indlæses EPG data for og streames til XBMC. Dette gøres med et enkelt klik på Map DVB services to channels også i ovenstående skærmbillede. Tvheadend vil så igen scanne og oprette kanaler. Kanalerne kan ses og gives placering under Configuration > Channel/EPG.

YouSee’s EPG data in DVB-C strømmen er ganske fornuftig så jeg har ikke behov for at bruge XMLTV på nuværende tidspunkt. For at benytte disse EPG data skal over-the-air grabberen aktiveres. Den findes samme sted som Channel/EPG på fanebladet EPG Grabber. Jeg har aktiveret EIT: DVB Grabber og deaktiveret alle de andre og det fungerer fint.

Med disse trin på plads er det tid til at fyre op for XBMC og forbinde den til Tvheadend.

xbmc-pvr-setup2TV delen i XBMC benytter addons til at kommunikere med de forskellige TV servere. Til Tvheadend skal vi bruge Tvheadend HTSP Client. I addon indstillingerne indtastes adressen på Tvheadend serveren samt evt. brugernavn og adgangskode. Et fornuftigt eksempel, hvis Tvheadend kører på samme PC, kan ses herover.

Med addon’en installeret og konfigureret er det blot et spørgsmål om at aktivere TV delen i XBMC under de generelle indstillinger. Der findes desuden en hel række relaterede indstillinger som kan justeres efter behov.

xbmc-pvr-setup3Til sidst er det blot et spørgsmål om at finde TV i XBMC’s hovedmenu, læne sig tilbage og stene lidt TV 🙂

xbmc-pvr-setup4

Opsætning af HDHomeRun Dual

Som tidligere nævnt købte jeg for nyligt en HDHomeRun Dual netværkstuner fordi min YouSee boks mere eller mindre er stået af. Selvom opsætningen ikke tog mere end en aftenstid, så var det ikke uden besvær og et par aha’ øjeblikke. Der findes en hel del information om HDHomeRun på nettet, men det er svært at finde de rigtige oplysninger. Hermed et forsøg på at råde bod på det 🙂

Mit setup består af en Debian Wheezy linux server som også kører mit Tvheadend setup. Tvheadend kommunikerer med HDHomeRun tuneren via dvbhdhomerun driveren. I dette indlæg vil jeg fokuserer på at compile driveren og konfigurere HDHomeRun tuneren.

Inden vi starter skal der installeres lidt software vi skal bruge. Det antages du allerede har koblet HDHomeRun boksen til netværket og antennekablet.

sudo apt-get install hdhomerun-config libhdhomerun-dev cmake linux-source-3.2 cvs build-essential

hdhomerun_config værktøjt bruges til at konfigurer tuneren. Disse ændringer gemmes permanent i boksens firmware og er derfor kun nødvendige en gang. Først skal vi finde tuneren på netværket, det ser cirka sådan ud:

$ hdhomerun_config discover
hdhomerun device XXXXXXXX found at aaa.bbb.ccc.ddd

– XXXXXXXX er ID’et på boksen og skal bruges i de efterfølgende kommandoer.

Firmwaren opdateres let til  den nyeste version. Check nederst på denne side for opdaterede firmwares. Så vidt jeg kan gennemskue gemmes indstillingerne ved en firmware opdatering.

$ wget http://download.silicondust.com/hdhomerun/hdhomerun3_dvbtc_firmware_20130328.bin
$ hdhomerun_config XXXXXXXX upgrade hdhomerun3_dvbtc_firmware_20130328.bin

Nu er vi kommet til de vigtige indstillinger – jeg spildte en del tid inden jeg fandt løsningen – opsætningen af QAM modulation samt channel map. Som YouSee kunde skal modulation sættes til a8qam64-6875. Jeg fandt oplysningen vha. google, jeg ved ikke om man kan udlede den på en anden måde.
Den anden vigtige oplysning er at sætte channel map til eu-cable. Ganske åbenlyst, men svært at finde oplysninger om. Ved at ændre channel map udvides frekvensområdet til at scanne et meget større område under kanalsøgningen vi laver om lidt.

$ hdhomerun_config XXXXXXXX set /sys/dvbc_modulation a8qam64-6875
$ hdhomerun_config XXXXXXXX set /tuner0/channelmap eu-cable
$ hdhomerun_config XXXXXXXX set /tuner1/channelmap eu-cable

Med ovenstående indstillinger på plads er vi klar til at lave en kanalsøgning. I mit tilfælde scannede den omkring 1000 frekvenser og den tog en times tid. Outputtet gemmes i hdhomerun.log filen.

$ hdhomerun_config XXXXXXXX scan 0 hdhomerun.log

Når scanningen er fuldført kan vi med lidt awk magi omtrylle log filen til en dvb-scan fil som Tvheadend kan læse – på den måde undgår vi at scanne i Tvheadend.

$ awk '{if ($1 ~ /SCANNING/) print "\n" $2; else print $0}' hdhomerun.log | awk 'BEGIN { RS = "" ; FS = "\n" } { if (length($4) > 0) print "C " $1 " 6875000 NONE QAM64" }' > dk-YouSee

Det var opsætningen af HDHomeRun boksen, nu skal dvbhdhomerun driveren compiles. På min Debian Wheezy server kræver det lidt ekstra krumspring, mens det efter sigende skulle være lettere på en Ubuntu maskine. Jeg fulgte denne guide, kort fortalt er det nødvendigt at bygge noget af Linux kernen fordi Debian ikke inkluderer DVB headers som standard.

$ cd /usr/src
$ tar xf linux-source-3.2.tar.bz2
$ cd linux-source-3.2
$ cp /boot/config-3.2.0-4-686-pae .config
$ make oldconfig
$ cp /usr/src/linux-headers-3.2.0-4-686-pae/Module.symvers .
$ make prepare scripts

Med det på plads kan vi fokusere på dvbhdhomerun. Først checkes koden ud og driveren compiles. modprobe linjen indlæser driveren i Linux kernen – for at gøre det automatisk under opstart kan en linje med dvb_hdhomerun tilføjes i /etc/modules.

$ cd /usr/src
$ cvs -z3 -d:pserver:anonymous@dvbhdhomerun.cvs.sourceforge.net:/cvsroot/dvbhdhomerun co -P dvbhdhomerun
$ cd dvbhdhomerun/kernel
$ sudo make install
$ sudo modprobe dvb_hdhomerun

Anden halvdel af dvbhdhomerun er et såkaldt user space program som kommunikerer med driveren. Programmet indlæser nogle få indstillinger fra /etc/dvbhdhomerun filen. Min ser således ud (XXXXXXXX skal udskiftes som tidligere):

[XXXXXXXX-0]
tuner_type=DVB-C
[XXXXXXXX-1]
tuner_type=DVB-C

Endelig compiles user space programmet således:

$ cd ../userhdhomerun
$ make
$ sudo build/userhdhomerun

Sidste linje starter programmet og du skulle gerne se en del log output omkring kommunikation med HDHomeRun tuneren. Med driveren indlæst og user space programmet startet er denne del af guiden slut. Næste gang vil jeg beskrive hvordan jeg installerer Tvheadend og får den til at kommunikere med HDHomeRun gennem dvbhdhomerun driveren.

XBMC, Tvheadend og HDHomeRun Dual

Endelig, endelig, endelig!

Min YouSee settop boks, Samsung SMT-H3106, er langt om længe begyndt at defekte – sporadiske udfald hvor HDMI signalet simpelthen forsvinder. Det holder jo ikke en meter, så jeg har fluks investeret i en HDHomeRun Dual – og på trods af at jeg ikke overhovedet har savnet den manglende PVR funktionalitet i YouSee boksen, så er det nu meget lækkert lige at kunne “bånde” Wheeler Dealers – eller endnu en af de uendelige genudsendelser 😉

Denne pludselige nyinvestering betyder samtidig også at jeg langt om længe har fået mulighed for at bruge XBMC’s PVR funktionalitet i samarbejde med Tvheadend TV streaming serveren – og ind til videre er jeg ganske imponeret. Der er altid lidt børnesygdomme som skal luges ud men mit setup fungerer ganske godt og WAF (Wife Acceptance Factor) er fortsat høj!

Jeg vil forsøge at dokumentere hvordan jeg har skruet mit setup sammen hen over den nærmeste fremtid, for det har ikke altid været lige let at finde de oplysninger og den dokumentation jeg har haft behov for. Grundstenen i mit setup er min Debian Wheezy linux server som kører Tvheadend og kommunikerer med HDHomeRun boksen via dvbhdhomerun. Fra Tvheadend streamer jeg så til mit ASRock mediecenter i TV rummet og til min OUYA konsol i stuen. På papiret et måske forholdsvis simpelt setup, men især XBMC på OUYA er en kilde til grå hår på trods af jeg bruger libstagefright build’et.

Hvordan ser jeres XBMC PVR setup ud? – har i nogle tips til HDHomeRun setup?

© 2024 Tommy Winther

Tema af Anders NorenOp ↑