HowTo:Workstation:ConfigDVB-T

De Luispa

Televisión y Linux

En este artículo documento los pasos realizados para conectar, configurar y hacer funcionar una tarjeta receptora de Televisión TDT.


Hardware

El primer paso es identificar tu hardware, configurarlo en el kernel, recompilar y rearrancar el equipo. En mi caso tengo una tarjeta SkyStar2 y unas semanas después compré una Cinergy HTpci, así que voy a documentar ambas


Nota: Tarjeta Cinergy 153b.1177 Terratec Cinergy HT PCI MKII card 79


  • Identifico el Hardware
# lspci
:
0a:00.0 Network controller: Techsan Electronics Co Ltd B2C2 FlexCopII DVB chip / Technisat SkyStar2 DVB card (rev 02)
:
0a:01.0 Multimedia video controller: Conexant CX23880/1/2/3 PCI Video and Audio Decoder (rev 05)
0a:01.1 Multimedia controller: Conexant CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] (rev 05)
0a:01.2 Multimedia controller: Conexant CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] (rev 05)
  • Configuro el kernel. Resalto a continuación cuales son las modificaciones adicionales que he realizado a la configuración que ya tenía donde estaba soportada mi tarjeta * WebCam Logitech QuickCam Pro 9000, que comparte opciones que son necesarias también para las de televisión.

Aviso: En mi caso sólo voy a tener la Cinergy conectada, pero documento las opciones del para SkyStar2

Configuración del kernel de Linux: Configuración de Video
  Device Drivers --->
    <M> I2C support  ---> 
        <M>   I2C device interface
        [*]   Autoselect pertinent helper modules 
        I2C Hardware Bus support  --->
           <M> Intel 82801 (ICH)   
           <M> Intel SCH SMBus 1.0                       
           <M> Intel PIIX4 and compatible (ATI/Serverworks/Broadcom/SMSC)    
    Multimedia Devices
          *** Multimedia core support ***   
      <M> Video For Linux  
      [ ]   Enable Video For Linux API 1 (DEPRECATED)   
      [ ]   Enable Video For Linux API 1 compatible Layer   
      <M> DVB for Linux                                                        <=== !!!
          *** Multimedia drivers ***           
      [*] Load and attach frontend and tuner driver modules as needed          <=== !!!
      [ ] Customize analog and hybrid tuner modules to build  --->                
      [*] Video capture adapters  --->                                         <=== !!!
          [*]   Autoselect pertinent encoders/decoders and other helper chips  <=== para la Cinergy
          <M>   Conexant 2388x (bt878 successor) support                       <=== para la Cinergy
          <M>     Conexant 2388x DMA audio support                             <=== para la Cinergy
          <M>     Blackbird MPEG encoder support (cx2388x + cx23416)           <=== para la Cinergy
          <M>     DVB/ATSC Support for cx2388x based TV cards                  <=== para la Cinergy
      [ ] Radio Adapters  --->
      [ ] Dynamic DVB minor allocation (NEW)
      [*] DVB/ATSC adapters (NEW)  --->                                        <=== !!!
           --- DVB/ATSC adapters
               <M>   Technisat/B2C2 FlexCopII(b) and FlexCopIII adapters       <=== para la SkyStar2
               <M>     Technisat/B2C2 Air/Sky/Cable2PC PCI                     <=== para la SkyStar2
               [*]   Customise the frontend modules to build
                  Customise DVB Frontends  --->
                    *** DVB-T (terrestrial) frontends ***
                    <M> Zarlink ZL10353 based                                  <=== para la Cinergy
      [ ] DAB adapters                                                          


  • Recompilo el kernel e instalo la nueva versión.
# make && make modules_install
# mount /boot
# cp arch/x86_64/boot/bzImage /boot/bzImage-2.6.30-gentoo-r4
# cp System.map /boot/System.map-2.6.30-gentoo-r4
# cd /usr/src
# emerge -v nvidia-drivers
# eselect opengl set nvidia
# emerge -v virtualbox-modules
# emerge -v linuxwacom


  • Se instalarían los siguientes módulos ( si sólo tuviese la SkyStar2 )
 INSTALL drivers/media/dvb/b2c2/b2c2-flexcop-pci.ko
 INSTALL drivers/media/dvb/b2c2/b2c2-flexcop.ko
 INSTALL drivers/media/dvb/dvb-core/dvb-core.ko
 INSTALL drivers/media/dvb/frontends/bcm3510.ko
 INSTALL drivers/media/dvb/frontends/cx24113.ko
 INSTALL drivers/media/dvb/frontends/cx24123.ko
 INSTALL drivers/media/dvb/frontends/dvb-pll.ko
 INSTALL drivers/media/dvb/frontends/isl6421.ko
 INSTALL drivers/media/dvb/frontends/itd1000.ko
 INSTALL drivers/media/dvb/frontends/lgdt330x.ko
 INSTALL drivers/media/dvb/frontends/mt312.ko
 INSTALL drivers/media/dvb/frontends/mt352.ko
 INSTALL drivers/media/dvb/frontends/nxt200x.ko
 INSTALL drivers/media/dvb/frontends/s5h1420.ko
 INSTALL drivers/media/dvb/frontends/stv0297.ko
 INSTALL drivers/media/dvb/frontends/stv0299.ko
  • Se instalarían los siguientes módulos ( si sólo tuviese la Cinergy )
 INSTALL drivers/media/dvb/dvb-core/dvb-core.ko
 INSTALL drivers/media/dvb/frontends/zl10353.ko
 INSTALL drivers/media/video/btcx-risc.ko
 INSTALL drivers/media/video/cx2341x.ko
 INSTALL drivers/media/video/cx88/cx88-alsa.ko
 INSTALL drivers/media/video/cx88/cx88-blackbird.ko
 INSTALL drivers/media/video/cx88/cx88-dvb.ko
 INSTALL drivers/media/video/cx88/cx8800.ko
 INSTALL drivers/media/video/cx88/cx8802.ko
 INSTALL drivers/media/video/cx88/cx88xx.ko
 INSTALL drivers/media/video/ir-kbd-i2c.ko
 INSTALL drivers/media/video/tuner.ko
 INSTALL drivers/media/video/tveeprom.ko
 INSTALL drivers/media/video/uvc/uvcvideo.ko
 INSTALL drivers/media/video/v4l2-common.ko
 INSTALL drivers/media/video/v4l2-compat-ioctl32.ko
 INSTALL drivers/media/video/v4l2-int-device.ko
 INSTALL drivers/media/video/videobuf-core.ko
 INSTALL drivers/media/video/videobuf-dma-sg.ko
 INSTALL drivers/media/video/videobuf-dvb.ko
 INSTALL drivers/media/video/videodev.ko
 INSTALL drivers/media/video/wm8775.ko
  • Rearranco el equipo.
# reboot
  • Tras el arranque por completo verifico que los módulos de video han cargado.
Ejemplo para SkyStar 2
# lsmod
Module                  Size  Used by
:
uvcvideo               56980  0 
videodev               35616  1 uvcvideo
:
b2c2_flexcop_pci        7132  0 
b2c2_flexcop           24020  1 b2c2_flexcop_pci
s5h1420                11516  1 b2c2_flexcop
mt352                   6620  1 b2c2_flexcop
itd1000                 5868  1 b2c2_flexcop
bcm3510                 9372  1 b2c2_flexcop
dvb_pll                 9704  1 b2c2_flexcop
stv0297                 7416  1 b2c2_flexcop
nxt200x                13116  1 b2c2_flexcop
isl6421                 2152  1 b2c2_flexcop
tuner_simple           13220  1 b2c2_flexcop
tuner_types            17720  1 tuner_simple
cx24113                 7692  1 b2c2_flexcop
mt312                   8188  1 b2c2_flexcop
cx24123                14096  1 b2c2_flexcop
lgdt330x                8908  1 b2c2_flexcop
stv0299                10320  1 b2c2_flexcop
dvb_core               87580  3 b2c2_flexcop,lgdt330x,stv0299

i2c_core               21824  17 nvidia,b2c2_flexcop,s5h1420,mt352,itd1000,bcm3510,dvb_pll,stv0297,nxt200x,isl6421,tuner_simple,cx24113,mt312,cx24123,lgdt330x,stv0299,i2c_i801

snd_pcm_oss            36032  0 
snd_mixer_oss          16056  1 snd_pcm_oss
snd_seq_oss            28384  0 
snd_seq_midi_event      6776  1 snd_seq_oss
snd_seq                50784  4 snd_seq_oss,snd_seq_midi_event
snd_hda_codec_realtek   252684  1 
snd_hda_intel          27112  3 
snd_hda_codec          61576  2 snd_hda_codec_realtek,snd_hda_intel
snd_usb_audio          90160  1 
snd_usb_lib            16232  1 snd_usb_audio
snd_pcm                66224  4 snd_pcm_oss,snd_hda_intel,snd_hda_codec,snd_usb_audio
snd_rawmidi            21280  1 snd_usb_lib
snd_seq_device          6876  3 snd_seq_oss,snd_seq,snd_rawmidi
snd_timer              20712  2 snd_seq,snd_pcm
snd_hwdep               8144  2 snd_hda_codec,snd_usb_audio
snd                    59272  21 snd_pcm_oss,snd_mixer_oss,snd_seq_oss,snd_seq,snd_hda_codec_realtek,snd_hda_intel,snd_hda_codec,snd_usb_audio,snd_pcm,snd_rawmidi,snd_seq_device,snd_timer,snd_hwdep
snd_page_alloc          9016  2 snd_hda_intel,snd_pcm
Ejemplo para Cinergy
# lsmod
Module                  Size  Used by
:
cx88_dvb               21580  15 
zl10353                 7696  1 
cx8802                 15580  1 cx88_dvb
cx8800                 32484  0 
cx88xx                 72856  3 cx88_dvb,cx8802,cx8800
snd_pcm_oss            36032  0 
snd_mixer_oss          16056  1 snd_pcm_oss
snd_seq_oss            28384  0 
snd_seq_midi_event      6776  1 snd_seq_oss
snd_seq                50784  4 snd_seq_oss,snd_seq_midi_event
dvb_core               87660  2 cx88_dvb,videobuf_dvb
tuner_xc2028           20096  2 
tuner                  21572  1 
snd_hda_codec_realtek   252668  1 
snd_hda_intel          27112  3 
uvcvideo               56980  0 
snd_hda_codec          61576  2 snd_hda_codec_realtek,snd_hda_intel
snd_usb_audio          90160  2 
ir_common              44076  1 cx88xx
i2c_i801                9300  0 
i2c_algo_bit            5836  1 cx88xx
snd_pcm                66224  6 snd_pcm_oss,snd_hda_intel,snd_hda_codec,snd_usb_audio
snd_usb_lib            16232  1 snd_usb_audio
snd_rawmidi            21280  1 snd_usb_lib
v4l2_common            14536  3 cx8800,cx88xx,tuner
tveeprom               13404  1 cx88xx
i2c_core               21824  10 zl10353,cx8800,cx88xx,tuner_xc2028,nvidia,tuner,i2c_i801,i2c_algo_bit,v4l2_common,tveeprom
snd_timer              20712  2 snd_seq,snd_pcm
snd_seq_device          6876  3 snd_seq_oss,snd_seq,snd_rawmidi
snd_hwdep               8144  2 snd_hda_codec,snd_usb_audio
snd                    59272  21 snd_pcm_oss,snd_mixer_oss,snd_seq_oss,snd_seq,snd_hda_codec_realtek,snd_hda_intel,snd_hda_codec,snd_usb_audio,snd_pcm,snd_rawmidi,snd_timer,snd_seq_device,snd_hwdep
videodev               35616  5 cx8800,cx88xx,tuner,uvcvideo,v4l2_common
v4l2_compat_ioctl32     7256  1 videodev
btcx_risc               4400  3 cx8802,cx8800,cx88xx
videobuf_dma_sg        11772  4 cx88_dvb,cx8802,cx8800,cx88xx
videobuf_core          16044  5 cx8802,cx8800,cx88xx,videobuf_dvb,videobuf_dma_sg
snd_page_alloc          9016  2 snd_hda_intel,snd_pcm


# dmesg  (SkyStar2)
B2C2 FlexCopII DVB chip / 
b2c2-flexcop: B2C2 FlexcopII/II(b)/III digital TV receiver chip loaded successfully
flexcop-pci: will use the HW PID filter.
flexcop-pci: card revision 2
b2c2_flexcop_pci 0000:0a:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
DVB: registering new adapter (FlexCop Digital TV device)
b2c2-flexcop: MAC address = 00:d0:d7:0a:aa:d3
b2c2-flexcop: i2c master_xfer failed
b2c2-flexcop: i2c master_xfer failed
CX24123: cx24123_i2c_readreg: reg=0x0 (error=-121)
CX24123: wrong demod revision: 87
b2c2-flexcop: i2c master_xfer failed
invalid HEADER
snd-usb-audio: probe of 1-6:1.0 failed with error -5
invalid HEADER
snd-usb-audio: probe of 1-6:1.1 failed with error -5
HDA Intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22
HDA Intel 0000:00:1b.0: setting latency timer to 64
usbcore: registered new interface driver snd-usb-audio
b2c2-flexcop: i2c master_xfer failed
b2c2-flexcop: found 'Zarlink MT352 DVB-T' .
DVB: registering adapter 0 frontend 0 (Zarlink MT352 DVB-T)...
b2c2-flexcop: initialization of 'Air2PC/AirStar 2 ATSC 1st generation' at the 'PCI' bus controlled by a 'FlexCopIIb' complete
# dmesg (Cinergy HTPCI)
:
cx2388x alsa driver version 0.0.7 loaded
cx88_audio 0000:0a:01.1: PCI INT A -> GSI 17 (level, low) -> IRQ 17
cx88[0]: subsystem: 153b:1177, board: Terratec Cinergy HT PCI MKII [card=79,autodetected], frontend(s): 1
cx88[0]: TV tuner type 71, Radio tuner type 71
cx88/2: cx2388x MPEG-TS Driver Manager version 0.0.7 loaded
cx88/0: cx2388x v4l2 driver version 0.0.7 loaded

xc2028 1-0061: creating new instance
xc2028 1-0061: type set to XCeive xc2028/xc3028 tuner
xc2028 1-0061: destroying instance
xc2028 1-0061: creating new instance
xc2028 1-0061: type set to XCeive xc2028/xc3028 tuner
cx88[0]: Asking xc2028/3028 to load firmware xc3028-v27.fw
i2c-adapter i2c-1: sendbytes: error -110
xc2028 1-0061: Error on line 1118: -110
IRQ 17/cx88[0]: IRQF_DISABLED is not guaranteed on shared IRQs
cx88[0]/1: CX88x/0: ALSA support for cx2388x boards
cx88[0]/2: cx2388x 8802 Driver Manager
cx88-mpeg driver manager 0000:0a:01.2: PCI INT A -> GSI 17 (level, low) -> IRQ 17
cx88[0]/2: found at 0000:0a:01.2, rev: 5, irq: 17, latency: 32, mmio: 0xfa000000
IRQ 17/cx88[0]: IRQF_DISABLED is not guaranteed on shared IRQs
cx8800 0000:0a:01.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17
cx88[0]/0: found at 0000:0a:01.0, rev: 5, irq: 17, latency: 32, mmio: 0xf9000000
IRQ 17/cx88[0]: IRQF_DISABLED is not guaranteed on shared IRQs
cx88[0]/0: registered device video1 [v4l2]
cx88[0]/0: registered device vbi0
cx88[0]/0: registered device radio0
i2c-adapter i2c-1: firmware: requesting xc3028-v27.fw  

xc2028 1-0061: Loading 80 firmware images from xc3028-v27.fw, type: xc2028 firmware, ver 2.7
cx88[0]: Calling XC2028/3028 callback
cx88[0]: setting GPIO to TV!
ieee1394: Host added: ID:BUS[0-00:1023]  GUID[00afdafb00001fd0]
xc2028 1-0061: Loading firmware for type=BASE MTS (5), id 0000000000000000.
cx88[0]: Calling XC2028/3028 callback
cx88[0]: setting GPIO to TV!
xc2028 1-0061: Loading firmware for type=MTS (4), id 000000000000b700.
xc2028 1-0061: Loading SCODE for type=MTS LCD NOGD MONO IF SCODE HAS_IF_4500 (6002b004), id 000000000000b700.
cx88[0]: Calling XC2028/3028 callback
cx88[0]: Calling XC2028/3028 callback
cx88[0]: setting GPIO to TV!
xc2028 1-0061: Loading firmware for type=BASE MTS (5), id 0000000000000000.
cx88[0]: Calling XC2028/3028 callback
cx88[0]: setting GPIO to TV!
xc2028 1-0061: Loading firmware for type=MTS (4), id 000000000000b700.
xc2028 1-0061: Loading SCODE for type=MTS LCD NOGD MONO IF SCODE HAS_IF_4500 (6002b004), id 000000000000b700.
cx88[0]: Calling XC2028/3028 callback
:
cx88/2: cx2388x dvb driver version 0.0.7 loaded
cx88/2: registering cx8802 driver, type: dvb access: shared
cx88[0]/2: subsystem: 153b:1177, board: Terratec Cinergy HT PCI MKII [card=79]
cx88[0]/2: cx2388x based DVB/ATSC card
cx8802_alloc_frontends() allocating 1 frontend(s)
xc2028 1-0061: attaching existing instance
xc2028 1-0061: type set to XCeive xc2028/xc3028 tuner
cx88[0]/2: xc3028 attached
DVB: registering new adapter (cx88[0])
DVB: registering adapter 0 frontend 0 (Zarlink ZL10353 DVB-T)...
cx88/2: unregistering cx8802 driver, type: dvb access: shared


  • Automáticamente se activa el dispositivo en /dev (igual para ambas tarjetas)
bolica ~ # ls -al /dev/dvb/adapter0/
total 0
drwxr-xr-x 2 root root     120 ago  7  2009 .
drwxr-xr-x 3 root root      60 ago  7  2009 ..
crw-rw---- 1 root video 212, 4 ago  7  2009 demux0
crw-rw---- 1 root video 212, 5 ago  7  2009 dvr0
crw-rw---- 1 root video 212, 3 ago  7  2009 frontend0
crw-rw---- 1 root video 212, 7 ago  7  2009 net0

Nota: Se activa /dev/video1 sólo con la Cinergy, no con la SkyStar2 (en el 0 tengo la cámara WebCam)


Software

Scan

El primer paso a realizar es hacer un escaneo de los canales.

# emerge -pv media-tv/linuxtv-dvb-apps

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild  N    ] media-tv/linuxtv-dvb-headers-3.1  0 kB
[ebuild  N    ] media-tv/linuxtv-dvb-apps-1.1.1.20080317  USE="-usb" 308 kB

Total: 2 packages (2 new), Size of downloads: 308 kB


$ dvbscan /usr/share/dvb/dvb-t/es-Madrid -o zap | tee ~/channels-vlc.conf

VLC

Otra prueba muy rápida es usar VLC y que él también escanee los canales. Sería así:

Medio->Abrir Aparato de Captura
 Modo de Captura: DVB
 Tarjeta: /dev/dvb/adapter0
 Tipo: DVB-T
 Opciones, frecuencia: 0
 Ancho de banda: Automático
 Opciones (botón): Dejo todo por defecto.
Click en REPRODUCIR.
Arranque
DVB-T
Opciones
Búsqueda de canales

Al no introducir una frecuencia correcta, el programa vlc realizará un scan completo y al terminar sintonizará uno de los canales. Esto es práctico para tener un primer vistazo de si funciona o no tu tarjeta.


Lo mejor es usar el fichero channels-vlc.conf que hemos creado en el paso anterior, así que abrimos VLC y:

Medio->Abrir Archivo
 Navegamos y seleccionamos "channels.conf"
Abre la lista de reproducción para tener acceso a los canales. 
  • O más corto:
$ vlc $HOME/channels-vlc.conf
Uso de canales


VDR 1.6

Instalación

  • Modifico el fichero /etc/portage/package.keywords con todo lo que voy a necesitar a partir de ahora.
# VDR
=media-video/vdr-1.6.0_p2-r3                           ~amd64
=media-tv/gentoo-vdr-scripts-0.4.6                     ~amd64
=media-fonts/vdrsymbols-ttf-20080905                   ~amd64
=app-admin/eselect-vdr-0.0.2-r1                        ~amd64
=media-plugins/vdr-softdevice-0.5.0.20090630           ~amd64
=media-plugins/vdr-remote-0.4.0                        ~amd64
=media-plugins/vdr-xineliboutput-1.0.4_p20090820       ~amd64
=www-misc/vdradmin-am-3.6.4-r1                         ~amd64
=media-video/y4mscaler-9.0-r1                          ~amd64
=media-plugins/vdr-streamdev-0.5.0_pre20090706         ~amd64 
=media-plugins/vdr-vdrrip-0.3.0-r7                     ~amd64
=media-video/vdrsync-0.1.3_pre050322-r1	       	       ~amd64
  • Verifico qué se instalaría e instalo el software
#
bolica ~ # emerge -pv vdr

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild  N    ] media-tv/gentoo-vdr-scripts-0.4.6  USE="-nvram" 35 kB
[ebuild  N    ] media-video/vdr-1.6.0_p2-r3  USE="-analogtv -atsc -cmdreccmdi18n -cmdsubmenu -cutterlimit -cutterqueue -cuttime -ddepgentry -deltimeshiftrec -dolbyinrec -dvbplayer -dvbsetup -dvdarchive -dvdchapjump -dvlfriendlyfnames -dvlrecscriptaddon -dvlvidprefer -dxr3 -em84xx -graphtft -hardlinkcutter -iptv -jumpplay -liemikuutio -lircsettings -livebuffer -lnbshare -mainmenuhooks -menuorg -noepg -osdmaxitems -parentalrating -pinplugin -rotor -settime -setup -softosd -sortrecords -sourcecaps -syncearly -timercmd -timerinfo -ttxtsubs -validinput -vanilla -volctrl -wareagleicon -yaepg" 1,039 kB

Total: 2 packages (2 new), Size of downloads: 1,073 kB
# emerge -v vdr
  • Se recomienda instalar las fuentes siguientes. Cuando arranques VDR podrás seleccionarlas desde el menú
Configuración->Menús en pantalla
 Fuente por defecto: VDRSymbolsSans
 Fuente pequeña: VDRSymbolsSans
 Usar letra pequeña: siempre  (esto va según gustos)

# emerge -v media-fonts/vdrsymbols-ttf-20080905

Fichero de canales channels.conf (con soporte HD en Madrid)

  • El fichero más importante en vdr es el que le indica dónde están los canales, por lo que el siguiente paso es crearlo, escanear los canales y salvarlo en formato VDR.
  • OPCION 1: Usar dvbscan. Siempre he usado esta opción. **Edito** En Junio 2010 no me funcionó para detectar los canales HD.
# emerge -pv media-tv/linuxtv-dvb-apps    <== Recuerda que necesitas instalar este paquete.
$ dvbscan /usr/share/dvb/dvb-t/es-Madrid -o vdr | tee /tmp/channels.conf
  • OPCION 2: Usar w_scan. Ahora uso esta opción, que detecta los canales HD
/etc/portage/package.keywords
=media-tv/w_scan-20090918 ~amd64
=media-tv/linuxtv-dvb-headers-5 ~amd64

# emerge -v w_scan
$ w_scan -c es > /tmp/channels.conf
  • Copio el fichero channels.conf a su sitio:
# mv /tmp/channels.conf /etc/vdr/channels.conf
  • A continuación podéis ver mis ejemplos de channels.conf para la zona de MADRID. A fecha de hoy (junio 2010) utilizo el segundo.
/etc/vdr/channels.conf para MADRID (Agosto 2009)
/etc/vdr/channels.conf Full HD para MADRID (Junio 2010)

Método de salida

El software VDR no tiene lo necesario para mostrar en pantalla el video recibido, sino que se apoya en software o hardware adicional para realizarlo. Hay 3 opciones: tarjetas receptoras (caras), tarjetas dedicadas o hacerlo por software (mi caso). El software se encargará de mostrar la imagen y el On Screen Display (OSD), sistema de menús. Empiezo por el que es más sencillo, vdr-softdevide:


vdr-softdevice
  • vdr-softdevice: Añado lo necesario al keywords (ver arriba) y realizo su instalación
# emerge -v vdr-softdevice
: 
[ebuild  N    ] app-admin/eselect-vdr-0.0.2-r1  2 kB
[ebuild  N    ] media-plugins/vdr-softdevice-0.5.0.20090630  USE="mmx xv -directfb -fbcon -mmxext -xinerama" 160 kB
:
  • Edito el fichero vdr.softdevice para selecciar correctamente el sistema de salida de audio/video
/etc/conf.d/vdr.softdevice.

Por ahora usaremos el método "shm" de memoria compartida y alsa, que ya viene activado por defecto en el fichero de configuración (opción SOFTDEVICE_VIDEO_OUT). Más adelante arrancaremos el programa ShmClient para obtener la ventana donde se ve la imagen.

  • Configuro el ALSA del usuario "vdr" para que emplee pulseaudio (en mi caso todo pasa por pulseaudio en mi sistema). El plugin va a usar alsa y como se ejecutará como usuario "vdr" al hacer el "/etc/init.d/vdr start", es necesario que al usuario vdr le funcione el audio. Básicamente copio el fichero .asounrc del usuario luis al HOME de vdr.
# cp /home/luis/.asoundrc /var/vdr/
  • El entorno X está abierto, con el usuario "luis" funcionando y el daemon "pulseaudio" arrancado desde el inicio de Sesión de Gnome. Lo que va a ocurrir es que el daemon de vdr va a conectar con alsa que a su vez verá en el .asoundrc que tiene que conectar con el daemon de pulseaudio.
  • Para ver la televisión es necesario activar el "desentrelazado", más adelante cuando arranquemos el cliente podrá hacerlo desde:
- Fichero /etc/vdr/setup.conf   softdevice.Deinterlace Method = 1			
- Menús: Configuración->Plugins->Softdevice->Post processing->Deinterlace Method: lavc


xineliboutput

La segunda opción es usar vdr-xineliboutput que además tiene la ventaja de poder trabajar de forma remota.

  • Instalación
# emerge vdr-xineliboutput
# eselect vdr-plugin enable xineliboutput
  • En mi caso voy a ejecutar el servidor VDR en el background y luego ejecutaré el frontend con el comando vdr-sxfe. Por lo tanto voy a configurar el siguiente fichero par que cuando arranque el servidor no intente activar la pantalla:
_EXTRAOPTS="--local=none --remote=37890"
  • Modifico el fichero svdrphosts.conf donde VDR indica quién puede conectar con él para ejecutar comandos usando el protocolo SVDRP, algo que va a necesitarse.
127.0.0.1             # always accept localhost
192.168.1.1/24        # any host on the local net
  • Ahora ya puedo arrancar vdr (servidor). Muestro antes qué plugins tengo habilitados.
# eselect vdr-plugin list
Available VDR plugins:
 [1]   softdevice
 [2]   streamdev-client
 [3]   streamdev-server *
 [4]   vdrrip *
 [5]   xine
 [6]   xineliboutput *

# /etc/init.d/vdr start
  • Arranco el cliente en una shell de usuario, hay dos opciones, una es usar vdr-sxfe y otra el propio xine.
$ vdr-sxfe --audio=alsa xvdr://localhost       
$ vdr-sxfe --audio=alsa --aspect=16:9 --fullscreen --width=1280 --height=1024 --nokbd --reconnect  xvdr://localhost
$ xine -D --audio-driver alsa -f xvdr://localhost     <== En mi caso uso este, con la opción de Deinterlace !
  • Nota: Sería posible ver la imagen desde otro linux, para lo cual sería necesario instalar el cliente "vdr-xineliboutput" y el comando "vdr-sxfe xvdr://<ip>" para conectar.
  • Para ver la televisión es necesario activar el "desentrelazado", en este plugin lo más comodo es activar el argumento "-D" durante el arranque, lo veremos a continuación.
vdr-xine

Otro plugin es vdr-xine. Tienes que tener el USE=vdr en el paquete xine-libs. Necesitas los overlays de vdr

# layman -a vdr-xine
  • Modifico keywords
# VDR-XINE (layman)
=media-plugins/vdr-xine-0.9.2                          ~amd64
  • Instalación y activación
# emerge vdr-xine
# eselect vdr-plugin enable vdr-xine
# eselect vdr-plugin disable xineliboutput
# eselect vdr-plugin disable softdevice
  • La configuración está en el fichero /etc/conf.d/vdr.xine
  • Modifico el fichero $HOME/.xine/keymap para adaptarlo
# jump to Title Menu
TitleMenu {
        key = VOID
        modifier = none
}

# jump to Root Menu
RootMenu {
        key = VOID
        modifier = none
}

# jump to Subpicture Menu
SubpictureMenu {
        key = VOID
        modifier = none
}

# jump to Audio Menu
AudioMenu {
        key = VOID
        modifier = none
}
:
# VDR Red button
VDRButtonRed {
        key = F1
        modifier = none
}

# VDR Green button
VDRButtonGreen {
        key = F2
        modifier = none
}

# VDR Yellow button
VDRButtonYellow {
        key = F3
        modifier = none
}

# VDR Blue button
VDRButtonBlue {
        key = F4
        modifier = none
}



Arranque de VDR

Soporte de GRAB

El programa vdradmin (lo vemos más adelante) usa el comando GRAB y se activa de la siguiente forma:

Fichero: /etc/conf.d/vdr
VDR_EXTRA_OPTIONS="--grab=/tmp"


Plugin de salida
  • Selección el plugin que mostrará la imagen en pantalla, bien softdevice o xineliboutpout.
    • Si eliges softdevice:
# eselect vdr-plugin enable softdevice
# eselect vdr-plugin disable xineliboutput
# eselect vdr-plugin disable xine
    • Si eliges xineliboutput
# eselect vdr-plugin disable softdevice
# eselect vdr-plugin enable xineliboutput
# eselect vdr-plugin disable xine
    • Si eliges xine
# eselect vdr-plugin disable softdevice
# eselect vdr-plugin disable xineliboutput
# eselect vdr-plugin enable xine
  • Dependiendo del plugin que selecciones, a la hora de arrancar VDR (servidor) puede que veas algún tipo de error. Este es un ejemplo de lo que yo veo con el de xine, pero aún así funciona
* VDR errors from /var/log/everything/current:
*   ERROR: unknown source key '
*   ERROR: remote control XineRemote not ready!
* Starting vdr watchdog...
Fichero remote.conf
  • Dependiendo de qué método de salida he seleccionado voy a usar un fichero de control por teclado adecuado
    • Si usas softdevice:
# cd /etc/vdr
# cp remote.softdevice-shm-luispa.conf /etc/vdr/remote.conf
    • Si usas xineliboutput
# cd /etc/vdr
# cp remote.xineliboutput.conf /etc/vdr/remote.conf


Arranque del daemon

Con lo realizado hasta ahora tenemos suficiente para que arranque, la primera vez que arrancas VDR no encontrará su fichero de configuración en /etc/vdr/setup.conf pero no pasa nada, ya lo creará cuando lo pares. Además tampoco es necesario que indiques cual es tu tarjeta receptora, dado que también la debería encontrar de forma automática.

  • Recuerda verificar que sólo tienes activo uno de los plugins de salida
# eselect vdr-plugin list
Available VDR plugins:
  [1]   softdevice
  [2]   xineliboutput *
  • Arrancamos el daemon
~ # /etc/init.d/vdr start
* Caching service dependencies...                                                                                       [ ok ]
* Preparing start of vdr:
*   Waiting for DVB devices...                                                                                          [ ok ]
* Created directory /var/vdr/video
*   Checking config files...                                                                                            [ ok ]
* Starting vdr...                                                                                                       [ ok ]
* First start of vdr: No check for running vdr possible
* until control device (remote/keyboard) keys are learnt!
* Starting vdr watchdog...                                                                                              [ ok ]
  

Ver la Televisión

El último paso es ver algo ¿no?. Arrancamos el cliente correspondiente para el plugin de salida que queramos usar:

  • Si usas vdr-softdevice
$ ShmClient                                             


  • Si usas vdr-xineliboutput uno de los dos siguientes
$ vdr-sxfe --audio=alsa xvdr://localhost       
$ xine -D --audio-driver alsa -f xvdr://localhost     <== En mi caso uso este, con la opción de Deinterlace !

Usa las combinaciones de teclado que te he puesto más arriba (ver los ficheros correspondientes remote.conf)


  • Si usas vdr-xine
$ xine vdr://var/vdr/xine/stream

Aviso: Si uso xineliboutput o vdr-xine junto con PulseAudio, cuando arranco, en la configuración de xine (modo master of the universe) y en Audio configuro PulseAudio y en el interfaz de salida pongo "altavoces". Está preparado para mi setup, descrito aquí


vdr+xine y compiz




Control Remoto

Una vez comprobado que todo tiene buena pinta vamos a seguir configurando. De momento, si quieres cambiar de canal, puedes usar el teclado. También te enseño otro truco, se trata de conectar con telnet y usar el protocolo que usa el programa, el SVDRP, para darle "órdenes", como por ejemplo ver en qué canal está sintonizado, cambiar de canal, etc.

~ # telnet localhost 2001
Trying 127.0.0.1...
Connected to bolica.parchis.org.
Escape character is '^]'.
220 bolica SVDRP VideoDiskRecorder 1.6.0-2; Sat Aug 29 22:03:29 2009; UTF-8
chan
250 1 La 1
chan 3
250 3 ANTENA 3


Hay dos formas de controlar cómo moverse por el OSD (Menús en pantalla) mediante el teclado como hemos visto o con un mando de control de remoto. Si la tarjeta de TV tiene un receptor de infrarojos lo más fácil es usar el programa "vdr-remote", en el caso contrario puedes usar LIRC, una aplicación externa que es capaz de controlar todo tipo de dispositivo de infrarojos (por ejemplo un conversor de puerto serie a infrarojos, o uno de USB a infrarojos).


vdr-remote
  • Con la tarjeta Cinergy viene un mando a distancia, para poder usarlo instalo el plugin vdr-remote

hora dispongo de una tarjeta

  • Instalo vdr-remote
# emerge -pv vdr-remote
  • Lo activo
# eselect vdr-plugin enable remote


  • Hay que decirle cual es el device de entrada (/etc/conf.d/vdr.remote)
  • Recomiendo instalar input-utils para tener el comando lsinput
# emerge input-utils
# lsinput
:
NO VEO EL REMOTO !!
:


PROBLEMA !!




Extras

Lo mejor de VDR es la cantidad de plugins adicionales que existen. Algunos de los que yo me he instalado:

vdradmin-am

Un interfaz Web para VDR que recomiendo.

  • Instalación
 # emerge -v vdradmin-am 
 :
 Calculating dependencies... done!
 [ebuild  N    ] dev-perl/Params-Validate-0.88  79 kB
 [ebuild  N    ] dev-perl/XML-XPath-1.13  39 kB
 [ebuild  N    ] dev-perl/libxml-perl-0.08  63 kB
 [ebuild  N    ] dev-perl/XML-RegExp-0.03-r1  4 kB
 [ebuild  N    ] dev-perl/List-MoreUtils-0.21  22 kB
 [ebuild  N    ] dev-perl/Class-Singleton-1.03  7 kB
 [ebuild  N    ] dev-perl/text-reform-1.11  21 kB
 [ebuild  N    ] dev-perl/File-HomeDir-0.86  40 kB
 [ebuild  N    ] dev-perl/AppConfig-1.66  63 kB
 [ebuild  N    ] dev-perl/text-autoformat-1.13  18 kB
 [ebuild  N    ] dev-perl/XML-DOM-1.44  115 kB
 [ebuild  N    ] dev-perl/DateTime-TimeZone-0.68  341 kB
 [ebuild  N    ] dev-perl/DateTime-Locale-0.42  725 kB
 [ebuild  N    ] dev-perl/DateTime-0.50  USE="-test" 135 kB
 [ebuild  N    ] dev-perl/DateTime-Format-W3CDTF-0.04  11 kB
 [ebuild  N    ] dev-perl/DateTime-Format-Mail-0.30  178 kB
 [ebuild  N    ] dev-perl/XML-RSS-1.44  USE="-test" 100 kB
 [ebuild  N    ] dev-perl/Template-Toolkit-2.19  USE="mysql xml -gd -latex -postgres" 757 kB
 [ebuild  N    ] dev-perl/Template-XML-2.17-r1  26 kB
 [ebuild  N    ] dev-perl/Template-DBI-2.64  14 kB
 [ebuild  N    ] www-misc/vdradmin-am-3.6.4-r1  USE="vdr" 702 kB

En mi caso no he cambiado ninguno de los valores de por defecto de la instalación gentoo de vdr, por lo que no es necesario hacer nada con la configuración. Si no es tu caso entonces tendrás que ejecutar "emerge --config vdradmin-am".

El usuario por defecto y contraseña es: gentoo-vdr/gentoo-vdr

  • Arranco vdradmin-am
# /etc/init.d/vdradmin start
  • Conecto con el interfaz
http://localhost:8001
Estrenos
¿estrenos hoy?
Tabla de tiempos
Control Remoto



Retransmisión por Red

  • El siguiente plugin permite montar un cliente/servidor para la retransmisión vía IP de la Televisión. Permite que vdr se conecte (cliente) a una fuente de streaming, o más interesante (servidor) que retransmita la imagen y el audio generando un streaming.
  • Añadir el keyword
Código: /etc/portage/package.keywords
=media-plugins/vdr-streamdev-0.5.0_pre20090706         ~amd64
  • Instalar
emerge -v vdr-streamdev1
  • Configuración del servidor
eselect vdr-plugin enable streamdev-server
  • Mirar el log (tail -f /var/log/everthing/current) y en otro terminal rearrancar vdr (/etc/init.d/vdr restart). Deberíamos ver lo siguiente:
Sep 16 20:17:12 [vdr] [21677] loading /etc/vdr/plugins/streamdev/streamdevhosts.conf
Sep 16 20:17:12 [vdr] [21694] streamdev server thread started (pid=21677, tid=21694)
Sep 16 20:17:12 [vdr] [21677] switching to channel 7
Sep 16 20:17:12 [vdr] [21694] Streamdev: Listening (VTP) on port 2004
Sep 16 20:17:12 [vdr] [21694] Streamdev: Listening (HTTP) on port 3000
  • Y efectivamente el programa vdr ahora escucha en los puertos 2004 y 3000
:
tcp        0      0 0.0.0.0:2004            0.0.0.0:*               LISTEN     21677/vdr           
tcp        0      0 0.0.0.0:3000            0.0.0.0:*               LISTEN     21677/vdr   
:
  • Tal como muestra el log, el fichero de configuración está en
/etc/vdr/plugins/streamdev/streamdevhosts.conf

Aquí indicamos desde qué rangos IP aceptará conexiones, en mi caso lo adapto a mi red local
Código: /etc/vdr/plugins/streamdev/streamdevhosts.conf
127.0.0.1             # always accept localhost                                 
192.168.1.0/24        # any host on the local net                               
  • Conexión desde un cliente
mplayer -vf pp=lb -cache 4096 http://192.168.1.1:3000/1
vlc -> abrir red -> protocolo http: dirección 192.168.1.1:3000/1
SMplayer -> URL -> ...


Transcodificación
  • Es posible transcodificar la Tele en tiempo real, de modo que podemos conectar vía red local con el canal que queramos; muy útil por ejemplo para conectar mediante líneas de comunicaciones lentas. Para hacerlo hay que usar la función de "externremux-feature" hay que crear ek fucgeri externremux.sh
mkdir /usr/share/vdr/streamdev/
cat > /usr/share/vdr/streamdev/externremux.sh
#!/bin/sh
#
# externremux.sh

# CONFIG START
  TMP=/tmp/externremux-${RANDOM:-$$}
  STREAMQUALITY="DSL6000"
# CONFIG END

mkdir -p $TMP
mkfifo $TMP/out.avi
(trap "rm -rf $TMP" EXIT HUP INT TERM ABRT; cat $TMP/out.avi) &

case ${1:-$STREAMQUALITY} in
     "DSL1000") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=100 \
		-oac mp3lame -lameopts preset=15:mode=3 -vf scale -zoom -xy 160 \
		-o $TMP/out.avi -- - &>$TMP/out.log ;;
     "DSL2000") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=128 \
		-oac mp3lame -lameopts preset=15:mode=3 -vf scale -zoom -xy 160 \
		-o $TMP/out.avi -- - &>$TMP/out.log ;;
     "DSL3000") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=250 \
		-oac mp3lame -lameopts preset=15:mode=3 -vf scale -zoom -xy 320 \
		-o $TMP/out.avi -- - &>$TMP/out.log ;;
     "DSL3500") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=300 \
                -oac mp3lame -lameopts preset=15:mode=3 -vf scale -zoom -xy 320 \
                -o $TMP/out.avi -- - &>$TMP/out.log ;;
     "DSL6000") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=350 \
		-oac mp3lame -lameopts preset=15:mode=3 -vf scale -zoom -xy 320 \
		-o $TMP/out.avi -- - &>$TMP/out.log ;;
     "DSL16000") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=500 \
		-oac mp3lame -lameopts preset=15:mode=3 -vf scale -zoom -xy 480 \
		-o $TMP/out.avi -- - &>$TMP/out.log ;;
       "LAN10") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=4096 \
		-oac mp3lame -lameopts preset=standard \
		-o $TMP/out.avi -- - &>$TMP/out.log ;;
      "WLAN11") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=768 \
		-oac mp3lame -lameopts preset=standard -vf scale -zoom -xy 640 \
		-o $TMP/out.avi -- - &>$TMP/out.log ;;
      "WLAN54") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=2048 \
		-oac mp3lame -lameopts preset=standard \
		-o $TMP/out.avi -- - &>$TMP/out.log ;;
	"IPAQ") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=350 \
		-oac mp3lame -lameopts preset=15:mode=3 -vf scale -zoom -xy 320 \
		-o $TMP/out.avi -- - &>$TMP/out.log ;;
	"OGG") exec ffmpeg2theora --format ts \
		--videoquality 0 --videobitrate 300 --width 360 --height 360 --speedlevel 1 \
		--audioquality 0 --audiobitrate 37 --channels 1 --audiostream 0 \
		--title "VDR Live Stream" \
		--output $TMP/out.avi -- - &>$TMP/out.log ;;
        "COPY") exec mencoder -of mpeg -ovc copy -oac copy -mpegopts format=mpeg \
                -o $TMP/out.avi -- - &>$TMP/out.log ;;
	   *) touch $TMP/out.avi ;;
esac
cd /usr/share/vdr/streamdev/
chown vdr:vdr externremux.sh
chmod 755 externremux.sh

  • Para conectar con un cliente hay que añadir "Extern[;Opción]"
$ mplayer -vf pp=lb -cache 4096 http://192.168.1.1:3000/Extern/1
vlc -> abrir red -> protocolo http: dirección 192.168.1.1:3000/Extern/1

$ mplayer -vf pp=lb -cache 4096 http://192.168.1.1:3000/Extern\;WLAN54/1
vlc -> abrir red -> protocolo http: dirección 192.168.1.1:3000/Extern;WLAN54/1



Ripear grabaciones

  • El siguiente plugin permite ripear las grabaciones de VDR a diferentes formatos. Las grabaciones de VDR se salvan en /var/vdr/video con un formato propio, por lo tanto no pueden ser vistas desde VLC/Mplayer de forma sencilla. La solución consiste en usar este plugin para transcodificarlas al formato que más nos interese.
Instalación
  • Añadir el keyword
Código: /etc/portage/package.keywords
=media-plugins/vdr-vdrrip-0.3.0-r7                     ~amd64
=media-video/vdrsync-0.1.3_pre050322-r1	       	       ~amd64
  • Instalar
emerge -v vdrsync
emerge -v vdr-vdrrip
  • Configuración del servidor
eselect vdr-plugin enable vdrrip


  • La configuración de vdrrip está en el fichero /etc/vdr/plugins/vdrrip/vdrrip-qh.conf y no he tenido que modificarlo.


Queuehandler
  • El programa que gestiona la cola de trabajos y realiza la transcodificación con mencoder se llama /usr/bin/vdrrip-qh. Lo he modificado para que emplee X264. Este primer parche es muy casero, cuando lo mejore lo documentaré.
Fichero: /usr/bin/vdrrip-qh
  :
    local vopopts="-vf $vopopts"
  fi

  # LUIS:                                                                                                                                          
  vopopts="-vf yadif,softskip,harddup"
 :
 :
  if [ "$ppvalues" -a "${ppvalues:1:2}" != "hb" ]
 :
    case "$vcodec" in
      "lavc")
        #local vopts="-ovc lavc -lavcopts vcodec=mpeg4:vhq:vbitrate=$br_video:vqmin=$min_q:vqmax=$max_q:vpass=$pass$mturbo -sws 2"                 
        
        # LUIS
        if [ "$pass" = "1" ]
        then
          local vopts="-ovc x264 -x264encopts bitrate=1800:subq=5:bframes=3:b_pyramid=normal:weight_b:turbo=1:threads=auto:pass=1"
        else
          local vopts="-ovc x264 -x264encopts bitrate=1800:subq=5:8x8dct:frameref=2:bframes=3:b_pyramid=normal:weight_b:threads=auto:pass=2"
        fi
         ;;
 :
Arranque
  • Paro vdr para que en el siguiente arranque active vdrrip
# /etc/init.d/vdr stop
  • Arranco vdr y vdrrip
# /etc/init.d/vdr start
# /etc/init.d/vdrrip-qh start


Ripear grabación
  • El plugin se maneja como siempre desde el OSD.
  • Primero necesitas haber grabado algo, te recomiendo que hagas una prueba con una grabación corta de 1 minuto.
  • Te recomiendo que edites y recortes tus grabaciones antes de ripearlas, para que ocupen menos, quites anuncios, etc. Usa las teclas verde,amarilla,izda.,dcha., para avanzar, retroceder en la reproducción y que te resulte más cómoda la edición. Tienes documentación en esta guía.
  • Con tu grabación ya "editada" y lista, accede al menú principal, entra en VDRRip, añádela a la cola y programa su "ripeo"
  • El resultado de las transcodificaciones queda en /var/vdr/video/vdrrip



Modificar grabaciones

Consulta esta guía, Es posible editar una Grabación existente, para eliminar trozos de la misma, como por ejemplo los anuncios, y crear un duplicado sin las partes que no te interesen. Accede a una de tus grabaciones y reproducela, desde dicho modo de reproducción podremos usar los siguiente botones para trabajar con las Marcas de Edición. Estas se usan para marcar puntos en el tiempo dentro de la grabación y luego poder cortar secciones.



Arranque automático y Conclusiones

  • No olvides añadir los daemons durante el boot
# rc-update add vdr default
# rc-update add vdradmin default
  • VDR es fantástico, aunque todavía tengo algunos "issues".
- Con softdevice el video tiene micro-paradas, tengo que investigarlo.
- Con xineliboutput esporádicamente empieza a fallar el audio. Tengo que cambiar de canal y volver al original para arreglarlo.
- Con xineliboutput tengo algún conflicto con su propia configuración de teclado.
- Con xineliboutput copia el volumen de VDR a ALSA. Hay que bajar el volumen de VDR hasta un nivel aceptable para que durante
  el arranque este bien. 
- La opción de GRAB necesaria para que en vdradmin-am funcione la "Televisión", no me funciona con xineliboutput, solo softdevice.



VDR 1.7

Esta es la versión no-estable de vdr todavía en desarrollo. Es posible instalarla a través de los overlays. He realizado pruebas con esta versión y a continuación describo de forma resumida los pasos realizados

Instalación

Nota: Estos pasos me han permitido hacer que la versión 1.7 me funcione, así como los nuevos canales HD de Madrid. Sólo he realizado los pasos siguientes, sin borrar los ficheros de configuración de la versión 1.6 (a pesar de desinstalarla como vemos a continuación), por lo que es importante saber que la documentación de los plugins y ficheros de la 1.6 documentada arriba son prácticamente válidos.


  • Paro y desinstalo vdr 1.6 para intentar empezar de la forma más limpia posible
# /etc/init.d/vdr stop
# /etc/init.d/vdradmin stop
# emerge -C vdr vdr-softdevice vdr-remote vdr-xine vdr-xineliboutput vdr-vdrrip vdr-streamdev vdradmin-am vdrsymbols-ttf gentoo-vdr-scripts
  • Añado los overlays:
 # layman -a vdr-devel
 # layman -a vdr-xine
  • Modifico keywords
# VDR 1.7  (layman)
=media-video/vdr-1.7.13                                ~amd64
=media-tv/gentoo-vdr-scripts-0.4.6-r1                  ~amd64
=sys-process/wait_on_pid-0.0.1 	                ~amd64
  • Instalo vdr
# emerge -v vdr
# emerge media-fonts/vdrsymbols-ttf
  • Instalo los plugins softdevice, streamdev-client, streamdev-server, vdrrip, xine y xineliboutput; de la misma forma que describí en las secciones anteriores para la versión 1.6.
  • Para ver la Televisión, selecciono uno de los plugins, arranco VDR y desde el cliente correspondiente me conecto. De la misma forma que describí en la Sección de Ver la Televisión



VDR 1.7 y Full HD

  • Funciona full-HD con la versión 1.7. En la sección de ejemplos de configuración puedes encontrar un ejemplo del fichero channels.conf que estoy usando actualmente.
  • PROBLEMAS PENDIENTES:
* En modo ventana con el plugin xine, softdevice y xineliboutput los canales HD (TVE en pruebas y Telemadrid) 
  no se redimensionan correctamente en pantalla.
* En modo pantalla completa me funciona xineliboutput, que es el plugin que estoy usando ahora por defecto. 
* El canal TVE funciona Video peo no el AUDIO dado que emite en formato AC3+ (o EAC3).
* El canal Telemadrid HD funciona ambos Video y Audio.
* Funciona la grabación, pero luego no puedo reproducir dichas grabaciones con VDR
  • Conclusión:
* Puedo ver y oir perfectamente Telemadrid en HD.
* Tengo que investigar como dar soporte al plugin xine para AC3+ para resolver el problema de audio con TVE.
* http://forums.gentoo.org/viewtopic-t-691564-highlight-mplayer+eac3.html
* No puedo reproducir las grabaciones, tengo que investigarlo.


TVE HD
Telemadrid HD


  • Prueba 1: Soporte de EAC3 (AC3+) con VLC 1.0.5 en un MacOSX funciona perfectamente. Esto demuestra que VDR sí soporta Full HD y sólo es necesario añadir EAC3 al cliente. En este caso uso VLC que via streaming recibe el stream y todo funciona.
URL: http://192.168.1.1:3000/2      FUNCIONA video/audio !!


  • Prueba 2: Soporte de EAC3 (AC3+) con mplayer en el propio Linux y usar streaming también funciona.
He instalado el overlay "multimedia"
# layman -a multimedia

Fichero keywords
=media-video/mplayer-1.0_rc4_p20100521"              ~amd64
=media-libs/x264-0.0.20100605                         ~amd64
=media-video/x264-encoder-0.0.20100605                ~amd64 
# emerge -v mplayer

$ mplayer -vo vdpau -cache 4096 http://192.168.1.1:3000/2     FUNCIONA video/audio !!


  • Prueba 3: Soporte de EAC3 con xine-lib 1.2 para usar el plugin normal. Todavía no he conseguido que me funcione.
Añado a package.keywords y unmask
   media-libs/xine-lib * ~* **
   media-video/xine-ui-0.99.6
# emerge -v xine-lib
# emerge -v xine-ui
La nueva versión de xine-lib y -ui funcionan, pero el audio de TVE-HD sigue sin funcionar.
Parece que hay un parche para soportar EAC3(AC3+) para xine, pero no está integrado en el ebuild.


---

MythTV

  • Modifico el fichero /etc/portage/package.use
media-tv/mythtv                 alsa mmx opengl perl python xvmc dvb dvd lirc
  • Verifico qué se instalaría
#
bolica ~ # emerge -pv mythtv 

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild  N    ] dev-python/mysql-python-1.2.2  86 kB
[ebuild  N    ] media-libs/libdvb-0.5.5.1-r3  USE="-doc" 305 kB
[ebuild  N    ] media-tv/mythtv-0.21_p18314-r1  USE="alsa dvb dvd lirc mmx opengl perl python xvmc -aac (-altivec) -autostart -debug -directv -fftw -ieee1394 -jack -lcd" VIDEO_CARDS="nvidia" 26,664 kB
[ebuild  N    ] x11-themes/mythtv-themes-0.21_p16505  14,579 kB


  • Realizo la instalación
# emerge -v mythtv


* Crear la BD
  # mysqladmin -uroot -p create mythconverg
  # mysql mythconverg -uroot -p -e"GRANT ALL ON mythconverg.* TO mythtv@localhost IDENTIFIED BY 'contraseña'"
  
Un equivalente es este:
  # mysql mythconverg -uroot -p < /usr/share/mythtv/database/mc.sql
Capturadora->Nueva-> 
  Tipo de tarjeta (flechas): Capturadora DVB DTV (v3.x)
Fuente de video-> "Tele España", listings EIT, frecuencias: europe-west.
Conexiones-> DVB-T Asociarla con Tele Spain y hacer búsqueda de canales

Pongo el primer canal el: 532
 
En General poner el canal de inicio.

$ mythfilldatabase

$ mythbackend

$ mythtfrontend


Captura de video Analógico

  • Ciertos modelos de tarjeta de TV (como en mi caso: Terratec HT-PCI MKII) tienen entradas de video y audio analógicas, lo cual permite pasar a formato digital los videos antiguos que tengamos en cintas analógicas. Existen muchos tipos de contenedores y codecs de video y audio que se pueden utilizar para el video generado en formato digital, pero es importante tener que el fichero generado sea compatible con el programa de edición que utilizaremos. Uno de los más conocidos y completos es Cinelerra.
  • La herramienta que utilizo para realizar la captura y generar el video es: mencoder. He tenido que dedicar mucho tiempo hasta encontrar el comando óptimo que genere una salida compatible con Cinelerra y con otros Editores conocidos. El contenedor que he elegido es mpeg, el codec de video es mpeg2 y el de audio es ac3. El tamaño que he utilizado para la fuente y los frames por segundo (width=720:height=480 y 30000/1001 ) son apropiados para una fuente en ntsc. Si la fuente tiene una norma de tv diferente, hay que reemplazarlos por los que correspondan.
Código: ~/bin/captura.sh
mencoder tv:// -tv \
device=/dev/video1:driver=v4l2:input=2:width=720:height=480:outfmt=yuy2:adevice=hw.0,0:alsa:amode=1 \
-oac lavc \
-ovc lavc -of mpeg -mpegopts format=dvd:tsaf \
-vf crop=716:476:0:0,pp=fd/al/tn:1:2:3,softskip,hqdn3d,yadif=0 -noskip -srate 48000 -af lavcresample=48000 \
fps=29.97 scale=720:480 -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:\
threads=8:trell:mbd=2:preme=2:dia=-1:predia=-1:precmp=2:subcmp=3:cbp:vqmin=1:dc=10:\
lmin=0.01:keyint=15:vstrict=0:acodec=ac3:abitrate=192:aspect=3/2 -ofps 30000/1001 \
-o /home/jose/Capturas/captura.mpg





Problemas

Documento aquí un problema que tardé en resolver:

Resuelto el problema de carga del driver cx88-dvb

  • Para la tarjeta CINERGY HT PCI MKII
Código: lspci -kvv
0a:01.0 Multimedia video controller: Conexant CX23880/1/2/3 PCI Video and Audio Decoder (rev 05)
0a:01.1 Multimedia controller: Conexant CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] (rev 05)
0a:01.2 Multimedia controller: Conexant CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] (rev 05)
  • El driver cx88-dvb no me funciona al hacer el "modprobe cx88-dvb"
Código: dmesg
cx88/2: cx2388x dvb driver version 0.0.7 loaded
cx88/2: registering cx8802 driver, type: dvb access: shared
cx88[0]/2: subsystem: 153b:1177, board: Terratec Cinergy HT PCI MKII [card=79]
cx88[0]/2: cx2388x based DVB/ATSC card
cx8802_alloc_frontends() allocating 1 frontend(s)
DVB: Unable to find symbol zl10353_attach()
cx88[0]/2: frontend initialization failed
cx88[0]/2: dvb_register failed (err = -22)
cx88[0]/2: cx8802 probe failed, err = -22


Aviso:

No puede conectar con el chip ZL10353
DVB: Unable to find symbol zl10353_attach()  Falta el código que implementa este método/función.



  • Miro en el .config del kernel
# cd /usr/src/linux
# grep -i zl .config                          <=== Esta ha sido la clave :-)
 :
 # CONFIG_DVB_ZL10353 is not set              <=== TIENE BUENA PINTA :-)
 :
  • Modifico el Kernel
Device Drivers -->
  Multimedia devices --->
    DVB/ATSC adapters --->
      [*]   Customise the frontend modules to build
         Customise DVB Frontends  --->
           :
           *** DVB-T (terrestrial) frontends ***
             :
             <M> Zarlink ZL10353 based             


  • Compilo el kernel y VOILA !! me recompila cx88-dvb y el nuevo driver zl10353
# make
:
 CC [M]  drivers/media/dvb/frontends/zl10353.o
 CC [M]  drivers/media/video/cx88/cx88-dvb.o
:
  • Instalo los nuevos drivers
# make modules_install

  • Prueba rápida, sin ni siquiera rearrancar el equipo, cargo los módulos
# modprobe zl10353
# modprobe cx88-dvb
# dmesg
:
cx88/2: cx2388x dvb driver version 0.0.7 loaded
cx88/2: registering cx8802 driver, type: dvb access: shared
cx88[0]/2: subsystem: 153b:1177, board: Terratec Cinergy HT PCI MKII [card=79]
cx88[0]/2: cx2388x based DVB/ATSC card
cx8802_alloc_frontends() allocating 1 frontend(s)
xc2028 1-0061: attaching existing instance
xc2028 1-0061: type set to XCeive xc2028/xc3028 tuner
cx88[0]/2: xc3028 attached
DVB: registering new adapter (cx88[0])
DVB: registering adapter 0 frontend 0 (Zarlink ZL10353 DVB-T)...
:
  • Rearranco vdr y FUNCIONA !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!



Enlaces y Créditos

[1] http://www.vdrwiki.com/ Página principal de VDR en Español.
[2] http://linuxtv.org/ LinuxTV
[3] http://www.mythtv.org/ MythTV
[4] http://www.gentoo.org/doc/en/vdr-guide.xml Guía de VDR para Gentoo
[5] http://www.gentoo.org/proj/en/desktop/video/vdr/index.xml Proyecto VDR en Gentoo
[6] http://www.a-land.de/ Proyecto vdrrip
[7] http://www.tdt1.com/ Canales TDT en España

Volver a la página de Role como Estación de trabajo

--Luis 11:14 13 jun 2010 (CEST)