pondelok 20. mája 2013

Raspberry Pi Tvheadend Server

Tvheadend

Tvheadend je linuxová služba, ktorá prevádza (transformuje) signál z DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, IPTV do sieťového streamu. Umožní Vám streamovať živé televízne vysielanie z Raspberry PI do  akéhokoľvek zariadenia v sieti. Cieľom tohto tutoriálu je nastavanie Tvheadend servera na Raspberry PI, pre účely streamingu vstupného signálu v mojom prípade IPTV do domácej siete s možnosťou spracovania na XBMC klientovi.


Hardware

  • Raspberry PI (256MB alebo 512MB verziu... ja mám tu slabšiu)
  • Pamäťovú kartu (SanDisk 32GB micro SD a k tomu SD adapter alebo aku máte po ruke minimálne 4GB. Pre TimeShift a nahrávanie je lepšie voliť vačšiu veľkosť.)
  • Napájací adaptér minimálne 1A. Ja používam tento 5V/1A spínaný adaptér.
  • Klávesnica a myš (najlepšie bezdrôtovú) ide to aj bez s použitím putty.

OS

Za operačný systém som volil Raspbian (Wheezy), ktorý je možné stiahnuť odtiaľ. Po nainštalovaní je dobré rozšíriť root partíciu na celú SD kartu inak sa môže stať, že dôjde voľné miesto na karte. 
Po prihlásení zadať príkaz

raspi-config

zobrazí sa nasledujúca obrazovka kde vyberieme položku "expand_rootfs" potvrdíme voľbu a reštartujeme


začíname ...

pridanie kľúča príkazom curl http://apt.tvheadend.org/repo.gpg.key | sudo apt-key add -
aktualizácia source listu sudo nano /etc/apt/sources.list
pridanie nového riadku deb http://apt.tvheadend.org/stable wheezy main

sudo apt-get update
nahodenie tvheadend sudo apt-get install tvheadend (na prípadné otázky odpovedať "yes", počas inštalácia zadať meno administrátora)



Konfigurácia tvheadend servera

zadať http://<rasppi_ip>:9981

záložka Configuration -> General: nastaviť požadovaný jazyk a uložiť zmeny.
Pozn. výber jazyka slúži pre potreby EPG informácii, nie je to jazyk rozhrania. 
 
záložka Configuration -> IPTV: s Add service postupne pridať jednotlivé stanice a priebežne to ukladať.
Channel name - názov stanice,
Interface - eth0,
Group - zadáva sa tu IP adresa stanice,
UDP Port - číslo portu príslušnej stanice

  
záložka Configuration -> EPG Grabber:  dôležité je vybrať správny grabber v mojom prípada XMLTV: Slovakia. Tento súbor (modul) po inštalácii neexistuje a preto si ho treba vytvoriť priamo na Raspberry PI.

zadáme sudo nano /usr/bin/tv_grab_sk

#!/bin/sh
dflag=
vflag=
cflag=
   
if [ $# -lt 1 ]
then
  wget -qO - "
http://frantisheq.eu/tvguide/xmltv/sk.xmltv"
  exit 0
fi

for arg
do
    delim=""
    case "$arg" in
    #translate --gnu-long-options to -g (short options)
       --description) args="${args}-d ";;
       --version) args="${args}-v ";;
       --capabilities) args="${args}-c ";;
       #pass through anything else
       *) [[ "${arg:0:1}" == "-" ]] || delim="\""
           args="${args}${delim}${arg}${delim} ";;
    esac
done
#Reset the positional parameters to the short options
eval set -- $args
while getopts "dvc" option
do
    case $option in
        d)  dflag=1;;
        v)  vflag=1;;
        c)  cflag=1;;
        \?) printf "unknown option: -%s\n" $OPTARG
            printf "Usage: %s: [--description] [--version] [--capabilities] \n" $(basename $0)
            exit 2
            ;;
    esac >&2
done
if [ "$dflag" ]
then
   printf "Slovakia\n"
fi
if [ "$vflag" ]
then
   printf "0.1\n"
fi
if [ "$cflag" ]
then
   printf "baseline\n"
fi
exit 0
 


Uložíme súbor (CTRL + X, Yes) a nastavíme súboru práva na to aby bol spustiteľný

sudo chmod 755 /usr/bin/tv_grab_sk

Reštatujeme tvheadend

Ak je všetko OK t.j EPG sa načítalo na záložke Electronic Program Guide sa zobrazí kompletná programová ponuka.

 
Existujú aj alternatívy ďalsích programov pre Android ako je TV Guide TIVIKO alebo TVHGuide.

2 komentáre:

  1. Ahoj,

    Mam troska problem s tymto postupom.
    V tej najnovsej verzii z https://github.com/tvheadend/tvheadend.git mi vobec neponukalo nastavenie IPTV. :-(
    Potom som z https://github.com/tvheadend/tvheadend/tree/release/3.6 stiahol a prekompiloval verziu 3.6, ktora mi uz IPTV transformuje do sietoveho streamu, ale problem mam s EPG.

    Pouzil som script /usr/local/bin/tv_grab_sk co mas tu uvedeny.
    A zmenil som tam:
    wget -qO – “http://xmltv.frantisheq.eu/sk.xmltv“
    na toto:
    wget -qO - "http://frantisheq.eu/tvguide/xmltv/sk.xmltv"
    Pretoze ten povodny odkaz boll uz nefunkcny.
    Umiestnil som ho ako pises tu: /usr/local/bin/tv_grab_sk
    Ale v Internal Graber:
    Module: mi neponukne nastavit XMLTV: Slovakia
    (v podstate ponuka iba none)

    Nasledne som dalej experimentoval, a v ramci toho som presiel na verziu TVHeadend 3.4
    V ramci toho som nasiel jednoduchsi sposob instalacie:
    - odpada manualne vytvaranie uzivatela a skupiny
    - odpada manualne vytvaranie suboru /etc/init.d/tvheadend s pravami a nastavovanim auto startu

    Zaroven uz funguje nastavenie EPG grabrov (aj nejake uz ponuka) aj ked ich umiestnenie je v /usr/bin/tv_grab_

    No aj ked uz to nastavenie funguje tak script co tu uvadzas tv_grab_sk aj po mojej uprave je nadalej nefunkcny.

    Vedel by si mi s tym EPG grabrom nejako helfnut ?
    Mas nejaku novsiu verziu toho scriptu ?

    (v nasledujucom prispevku uvediem moj postup instalacie zatial bez EPG)

    OdpovedaťOdstrániť
  2. Instalacia Raspbian
    1. Nainstaluj Raspbian "wheezy" (http://www.raspberrypi.org/downloads/)
    + pripadne expanduj filesystem - maximalizuj dostupne miesto na SD

    Updatovanie Raspbian
    2. Naloguj sa na konzolu
    3. Zadaj: sudo apt-get update
    4. Zadaj: sudo apt-get dist-upgrade

    Instalacia TVHeadend
    5. Zadaj: sudo curl http://apt.tvheadend.org/repo.gpg.key | sudo apt-key add -
    6. Zadaj: sudo nano /etc/apt/sources.list
    7. Dopln na novy riadok: deb http://apt.tvheadend.org/stable wheezy main
    8. Zadaj: sudo apt-get update
    9. Zadaj: sudo apt-get install tvheadend
    - odpovedaj 'yes' na pripadne otazky ....
    - nastav tvheadend admin uzivatela a heslo ak sa bude pytat

    Konfiguracia TVHeadend
    10. V prehliadaci otvor: http://:9981
    11. V zalozke Configuration -> DVB Inputs -> IPTV: pomocou 'Add service'
    postupne pridaj jednotlive stanice a priebezne to ukladaj:
    * Channel name - nazov stanice,
    * Interface - eth0,
    * Group - zadava sa tu IP adresa stanice,
    * UDP Port - cislo portu prislusnej stanice

    (dufam, ze som sa nikde nesekol a na nic som nezabudol)

    OdpovedaťOdstrániť