Categories: TVVideo

Placa Pixelview PlayTV Hybrid no Linux Ubuntu: primeiras impressões

O kernel Linux 2.6.38 já traz suporte para a placa de TV Pixelview PlayTV USB Hybrid no Linux Ubuntu. Com esta placa, é possível se assistir a TV digital brasileira SBTVD em fullseg (1920×1080) e 1seg (320×240), além da TV standard. Também permite gravação de fontes externas analógicas — como receptores de satélite e filmadoras — pelas entradas Composite (conector RCA amarelo), S-Video e RF, em resolução 720×480. Além disto, capta rádio FM.

O Linux reconhece os chips Conexant cx23102 e Fujitsu mb86a20s graças ao trabalho do professor brasileiro Mauro Carvalho Chehab (mchehabΘredhat·com), mantenedor dos módulos multimídia do Linux e um dos 30 maiores colaboradores deste sistema operacional livre. Um trabalho fundamental no momento em que o Brasil deflagra uma ofensiva diplomática-cultural-comercial na difusão do padrão ISDB-TB em países do hemisfério sul.

Hacking TV

O comando lsusb, que lista os dispositivos USB, reporta:

Bus 001 Device 002: ID 1554:5010 Prolink Microsystems Corp.

Vendor ID é 1554 e Product ID é 5010.

O comando “modinfo cx231xx” reporta os parâmetros do módulo Linux cx231xx :

  • pcb_debug: enable pcb config debug messages (int)
  • mpegbufs: number of mpeg buffers, range 2-32 (int)
  • mpeglines: number of lines in an MPEG buffer, range 2-32 (int)
  • mpeglinesize: number of bytes in each line of an MPEG buffer, range 512-1024 (int)
  • v4l_debug: enable V4L debug messages (int)
  • core_debug: enable debug messages [core] (int)
  • reg_debug: enable debug messages [URB reg] (int)
  • alt: alternate setting to use for video endpoint (int)
  • tuner: tuner type (int)
  • transfer_mode: transfer mode (1-ISO or 0-BULK) (int)
  • disable_ir: disable infrared remote support (int)
  • i2c_scan: scan i2c bus at insmod time (int)
  • i2c_debug: enable debug messages [i2c] (int)
  • isoc_debug: enable debug messages [isoc transfers] (int)
  • card: card type (array of int)
  • video_nr: video device numbers (array of int)
  • vbi_nr: vbi device numbers (array of int)
  • radio_nr: radio device numbers (array of int)
  • video_debug: enable debug messages (int)

No Ubuntu, estes parâmetros devem ser passados no arquivo /etc/modprobe.d/cx231xx.conf para serem automaticamente configurados no boot. Por exemplo, a ordem dos dispositivos de vídeo, rádio e closed captions pode ser definida com esta linha no arquivo:

options cx231xx video_nr=2 radio_nr=2 vbi_nr=2

Assim, posso ter a webcâmera como dispositivo /dev/video0, a placa de TV PCI como /dev/video1 e a placa de TV USB como /dev/video2

O arquivo de log /var/log/dmesg reporta:

cx231xx #0: cx231xx #0: v4l2 driver version 0.0.1
cx231xx #0: cx231xx_dif_set_standard: setStandard to 100
cx231xx #0: video_mux : 0
cx231xx #0: do_mode_ctrl_overrides : 0x100
cx231xx #0: do_mode_ctrl_overrides NTSC
cx231xx #0: cx231xx #0/0: registered device video0 [v4l2]
cx231xx #0: cx231xx #0/0: registered device vbi1
cx231xx #0: V4L2 device registered as video0 and vbi1
Registered IR keymap rc-pixelview-002t
input: i2c IR (Pixelview PlayTV USB Hy as /devices/virtual/rc/rc1/input6
rc1: i2c IR (Pixelview PlayTV USB Hy as /devices/virtual/rc/rc1
ir-kbd-i2c: i2c IR (Pixelview PlayTV USB Hy detected at i2c-2/2-0030/ir0 [cx231xx #0]
cx231xx #0: EndPoint Addr 0x84, Alternate settings: 5
cx231xx #0: Alternate setting 0, max size= 512
cx231xx #0: Alternate setting 1, max size= 184
cx231xx #0: Alternate setting 2, max size= 728
cx231xx #0: Alternate setting 3, max size= 2892
cx231xx #0: Alternate setting 4, max size= 1800
cx231xx #0: EndPoint Addr 0x85, Alternate settings: 2
cx231xx #0: Alternate setting 0, max size= 512
cx231xx #0: Alternate setting 1, max size= 512
cx231xx #0: EndPoint Addr 0x86, Alternate settings: 2
cx231xx #0: Alternate setting 0, max size= 512
cx231xx #0: Alternate setting 1, max size= 576
cx231xx #0: EndPoint Addr 0x81, Alternate settings: 6
cx231xx #0: Alternate setting 0, max size= 512
cx231xx #0: Alternate setting 1, max size= 64
cx231xx #0: Alternate setting 2, max size= 128
cx231xx #0: Alternate setting 3, max size= 316
cx231xx #0: Alternate setting 4, max size= 712
cx231xx #0: Alternate setting 5, max size= 1424
usbcore: registered new interface driver cx231xx
cx231xx #0: cx231xxcx231xx: called cx231xx_uninit_vbi_isoc
cx231xx #0: cx231xx_stop_stream():: ep_mask = 10
cx231xx #0:  setPowerMode::mode = 32, No Change req.
cx231xx #0: cx231xx_stop_stream():: ep_mask = 8
cx231xx #0: cx231xx-audio.c: probing for cx231xx non standard usbaudio
cx231xx #0: EndPoint Addr 0x83, Alternate settings: 3
cx231xx #0: Alternate setting 0, max size= 512
cx231xx #0: Alternate setting 1, max size= 28
cx231xx #0: Alternate setting 2, max size= 52
cx231xx: Cx231xx Audio Extension initialized
dvb_init: looking for demod on i2c bus: 2
mb86a20s: mb86a20s_attach:
Detected a Fujitsu mb86a20s frontend
tda18271 2-0060: attaching existing instance
DVB: registering new adapter (cx231xx #0)
DVB: registering adapter 0 frontend 0 (Fujitsu mb86A20s)...
Successfully loaded cx231xx-dvb
cx231xx: Cx231xx dvb Extension initialized

O módulo cx231xx reconhece o chip cx23102, decodificador de áudio e vídeo USB e receptor de infravermelho. Segundo sua datasheet, ele suporta os seguintes formatos de vídeo: Composite, S-Video, 480i YPrPb, RGB Packed, YCrCb Packed, 10-bit Packed, e YCrCb/YUY2. O receptor infravermelho do chip também foi detectado.

O sintonizador híbrido analógico e digital de TV e FM foi reconhecido como TDA1827HD/C2 .

O comando v4l-info (informações Video For Linux) reportou:

### v4l2 device info [/dev/video2] ###
general info
 VIDIOC_QUERYCAP
 driver                  : "cx231xx"
 card                    : "Pixelview PlayTV USB Hybrid"
 bus_info                : "usb-0000:00:1a.7-4"
 version                 : 0.0.1
 capabilities            : 0x5030011 [VIDEO_CAPTURE,VBI_CAPTURE,TUNER,AUDIO,READWRITE,STREAMING]

standards
 VIDIOC_ENUMSTD(0)
 index                   : 0
 id                      : 0xb000 [NTSC_M,NTSC_M_JP,?]
 name                    : "NTSC"
 frameperiod.numerator   : 1001
 frameperiod.denominator : 30000
 framelines              : 525
 VIDIOC_ENUMSTD(1)
 index                   : 1
 id                      : 0x1000 [NTSC_M]
 name                    : "NTSC-M"
 frameperiod.numerator   : 1001
 frameperiod.denominator : 30000
 framelines              : 525
 VIDIOC_ENUMSTD(2)
 index                   : 2
 id                      : 0x2000 [NTSC_M_JP]
 name                    : "NTSC-M-JP"
 frameperiod.numerator   : 1001
 frameperiod.denominator : 30000
 framelines              : 525
 VIDIOC_ENUMSTD(3)
 index                   : 3
 id                      : 0x8000 [?]
 name                    : "NTSC-M-KR"
 frameperiod.numerator   : 1001
 frameperiod.denominator : 30000
 framelines              : 525
 VIDIOC_ENUMSTD(4)
 index                   : 4
 id                      : 0x4000 [?]
 name                    : "NTSC-443"
 frameperiod.numerator   : 1001
 frameperiod.denominator : 30000
 framelines              : 525
 VIDIOC_ENUMSTD(5)
 index                   : 5
 id                      : 0xff [PAL_B,PAL_B1,PAL_G,PAL_H,PAL_I,PAL_D,PAL_D1,PAL_K]
 name                    : "PAL"
 frameperiod.numerator   : 1
 frameperiod.denominator : 25
 framelines              : 625
 VIDIOC_ENUMSTD(6)
 index                   : 6
 id                      : 0x7 [PAL_B,PAL_B1,PAL_G]
 name                    : "PAL-BG"
 frameperiod.numerator   : 1
 frameperiod.denominator : 25
 framelines              : 625
 VIDIOC_ENUMSTD(7)
 index                   : 7
 id                      : 0x8 [PAL_H]
 name                    : "PAL-H"
 frameperiod.numerator   : 1
 frameperiod.denominator : 25
 framelines              : 625
 VIDIOC_ENUMSTD(8)
 index                   : 8
 id                      : 0x10 [PAL_I]
 name                    : "PAL-I"
 frameperiod.numerator   : 1
 frameperiod.denominator : 25
 framelines              : 625
 VIDIOC_ENUMSTD(9)
 index                   : 9
 id                      : 0xe0 [PAL_D,PAL_D1,PAL_K]
 name                    : "PAL-DK"
 frameperiod.numerator   : 1
 frameperiod.denominator : 25
 framelines              : 625
 VIDIOC_ENUMSTD(10)
 index                   : 10
 id                      : 0x100 [PAL_M]
 name                    : "PAL-M"
 frameperiod.numerator   : 1001
 frameperiod.denominator : 30000
 framelines              : 525
 VIDIOC_ENUMSTD(11)
 index                   : 11
 id                      : 0x200 [PAL_N]
 name                    : "PAL-N"
 frameperiod.numerator   : 1
 frameperiod.denominator : 25
 framelines              : 625
 VIDIOC_ENUMSTD(12)
 index                   : 12
 id                      : 0x400 [PAL_Nc]
 name                    : "PAL-Nc"
 frameperiod.numerator   : 1
 frameperiod.denominator : 25
 framelines              : 625
 VIDIOC_ENUMSTD(13)
 index                   : 13
 id                      : 0x800 [PAL_60]
 name                    : "PAL-60"
 frameperiod.numerator   : 1001
 frameperiod.denominator : 30000
 framelines              : 525
 VIDIOC_ENUMSTD(14)
 index                   : 14
 id                      : 0xff0000 [SECAM_B,SECAM_D,SECAM_G,SECAM_H,SECAM_K,SECAM_K1,SECAM_L,?ATSC_8_VSB]
 name                    : "SECAM"
 frameperiod.numerator   : 1
 frameperiod.denominator : 25
 framelines              : 625
 VIDIOC_ENUMSTD(15)
 index                   : 15
 id                      : 0x10000 [SECAM_B]
 name                    : "SECAM-B"
 frameperiod.numerator   : 1
 frameperiod.denominator : 25
 framelines              : 625
 VIDIOC_ENUMSTD(16)
 index                   : 16
 id                      : 0x40000 [SECAM_G]
 name                    : "SECAM-G"
 frameperiod.numerator   : 1
 frameperiod.denominator : 25
 framelines              : 625
 VIDIOC_ENUMSTD(17)
 index                   : 17
 id                      : 0x80000 [SECAM_H]
 name                    : "SECAM-H"
 frameperiod.numerator   : 1
 frameperiod.denominator : 25
 framelines              : 625
 VIDIOC_ENUMSTD(18)
 index                   : 18
 id                      : 0x320000 [SECAM_D,SECAM_K,SECAM_K1]
 name                    : "SECAM-DK"
 frameperiod.numerator   : 1
 frameperiod.denominator : 25
 framelines              : 625
 VIDIOC_ENUMSTD(19)
 index                   : 19
 id                      : 0x400000 [SECAM_L]
 name                    : "SECAM-L"
 frameperiod.numerator   : 1
 frameperiod.denominator : 25
 framelines              : 625
 VIDIOC_ENUMSTD(20)
 index                   : 20
 id                      : 0x800000 [?ATSC_8_VSB]
 name                    : "SECAM-Lc"
 frameperiod.numerator   : 1
 frameperiod.denominator : 25
 framelines              : 625

inputs
 VIDIOC_ENUMINPUT(0)
 index                   : 0
 name                    : "Television"
 type                    : TUNER
 audioset                : 0
 tuner                   : 0
 std                     : 0xffffff [PAL_B,PAL_B1,PAL_G,PAL_H,PAL_I,PAL_D,PAL_D1,PAL_K,PAL_M,PAL_N,PAL_Nc,PAL_60,NTSC_M,NTSC_M_JP,?,?,SECAM_B,SECAM_D,SECAM_G,SECAM_H,SECAM_K,SECAM_K1,SECAM_L,?ATSC_8_VSB]
 status                  : 0x0 []
 VIDIOC_ENUMINPUT(1)
 index                   : 1
 name                    : "Composite1"
 type                    : CAMERA
 audioset                : 0
 tuner                   : 0
 std                     : 0xffffff [PAL_B,PAL_B1,PAL_G,PAL_H,PAL_I,PAL_D,PAL_D1,PAL_K,PAL_M,PAL_N,PAL_Nc,PAL_60,NTSC_M,NTSC_M_JP,?,?,SECAM_B,SECAM_D,SECAM_G,SECAM_H,SECAM_K,SECAM_K1,SECAM_L,?ATSC_8_VSB]
 status                  : 0x0 []
 VIDIOC_ENUMINPUT(2)
 index                   : 2
 name                    : "S-Video"
 type                    : CAMERA
 audioset                : 0
 tuner                   : 0
 std                     : 0xffffff [PAL_B,PAL_B1,PAL_G,PAL_H,PAL_I,PAL_D,PAL_D1,PAL_K,PAL_M,PAL_N,PAL_Nc,PAL_60,NTSC_M,NTSC_M_JP,?,?,SECAM_B,SECAM_D,SECAM_G,SECAM_H,SECAM_K,SECAM_K1,SECAM_L,?ATSC_8_VSB]
 status                  : 0x0 []

tuners
 VIDIOC_G_TUNER(0)
 index                   : 0
 name                    : "Tuner"
 type                    : ANALOG_TV
 capability              : 0x2 [NORM]
 rangelow                : 0
 rangehigh               : 4294967295
 rxsubchans              : 0x0 []
 audmode                 : MONO
 signal                  : 65535
 afc                     : 0

video capture
 VIDIOC_ENUM_FMT(0,VIDEO_CAPTURE)
 index                   : 0
 type                    : VIDEO_CAPTURE
 flags                   : 0
 description             : "16bpp YUY2, 4:2:2, packed"
 pixelformat             : 0x56595559 [YUYV]
 VIDIOC_G_FMT(VIDEO_CAPTURE)
 type                    : VIDEO_CAPTURE
 fmt.pix.width           : 640
 fmt.pix.height          : 480
 fmt.pix.pixelformat     : 0x56595559 [YUYV]
 fmt.pix.field           : INTERLACED
 fmt.pix.bytesperline    : 1280
 fmt.pix.sizeimage       : 614400
 fmt.pix.colorspace      : SMPTE170M
 fmt.pix.priv            : 0

vbi capture
 VIDIOC_G_FMT(VBI_CAPTURE)
 type                    : VBI_CAPTURE
 fmt.vbi.sampling_rate   : 27000000
 fmt.vbi.offset          : 0
 fmt.vbi.samples_per_line: 1440
 fmt.vbi.sample_format   : 0x59455247 [GREY]
 fmt.vbi.start[0]        : 10
 fmt.vbi.start[1]        : 273
 fmt.vbi.count[0]        : 12
 fmt.vbi.count[1]        : 12
 fmt.vbi.flags           : 0

controls
 VIDIOC_QUERYCTRL(BASE+0)
 id                      : 9963776
 type                    : INTEGER
 name                    : "Brightness"
 minimum                 : 0
 maximum                 : 255
 step                    : 1
 default_value           : 128
 flags                   : 32
 VIDIOC_QUERYCTRL(BASE+1)
 id                      : 9963777
 type                    : INTEGER
 name                    : "Contrast"
 minimum                 : 0
 maximum                 : 127
 step                    : 1
 default_value           : 64
 flags                   : 32
 VIDIOC_QUERYCTRL(BASE+2)
 id                      : 9963778
 type                    : INTEGER
 name                    : "Saturation"
 minimum                 : 0
 maximum                 : 127
 step                    : 1
 default_value           : 64
 flags                   : 32
 VIDIOC_QUERYCTRL(BASE+3)
 id                      : 9963779
 type                    : INTEGER
 name                    : "Hue"
 minimum                 : -128
 maximum                 : 127
 step                    : 1
 default_value           : 0
 flags                   : 32

Os parâmetros de brilho, contraste, matiz, saturação e volume podem ser controlados interativamente pelo programa GUVCViewer. O programa v4l2ucp lê os parâmetros mas mostra-os desabilitados para mudanças.

O programa v4l2ctrl permite gravar e ler estes parâmetros por linha de comando. Pode ser colocado num ícone no painel, para acesso fácil. POr exemplo, a linha abaixo salva num arquivo os parâmetros. Trocar o “-s” por “-l” causa o carregamento dos parâmetros.

v4l2ctrl -d /dev/video2 -s sbtvd.conf

Áudio

Os dispositivos de áudio podem ser listados com o comando “cat /proc/asound/cards”:

meira@P5QL-E:~$ cat /proc/asound/cards
 0 [Intel          ]: HDA-Intel - HDA Intel
                      HDA Intel at 0xf9ff8000 irq 44
 1 [FM801AU        ]: FM801 - ForteMedia FM801-AU
                      ForteMedia FM801-AU at 0xe480, irq 17
 2 [Cx231xxAudio   ]: Cx231xx-Audio - Cx231xx Audio
                      Conexant cx231xx Audio
 3 [U0x93a0x2620   ]: USB-Audio - USB Device 0x93a:0x2620
                      USB Device 0x93a:0x2620 at usb-0000:00:1a.1-1, full speed

E também podemos listar os identificadores de hardware com “cat /proc/asound/pcm”:

meira@P5QL-E:~$ cat /proc/asound/pcm
00-00: ALC1200 Analog : ALC1200 Analog : playback 1 : capture 1
00-02: ALC1200 Analog : ALC1200 Analog : capture 1
00-03: ALC1200 Digital : ALC1200 Digital : playback 1
01-00: FM801 : FM801 : playback 1 : capture 1
02-00: Cx231xx Audio : Conexant cx231xx Capture : capture 1
03-00: USB Audio : USB Audio : capture 1

Com esta informação, sabemos que o dispositivo deve ser identificado como hw:2,0 em programas como mencoder. Neste caso, os parâmetros do mencoder seriam: “-tv device=/dev/video2:adevice=hw.2,0″. Note que o mencoder exige ponto em vez de dois pontos nos nomes de dipositivos ALSA, já que o “:” é usado como separador de parâmetros.

O programa amixer, no entanto, não lista nenhum controle de volume no dispositivo 2 (comando “amixer -c 2”).

O programa alsamixer (comando “alsamixer -c 2”) no terminal revela que o dispositivo não possui nenhum controle.

O programa arecord (comando “arecord -l”) lista todos os dispositivos de captura de áudio:

meira@P5QL-E:~$ arecord -l
**** Lista de Dispositivos CAPTURE Hardware ****
placa 0: Intel [HDA Intel], dispositivo 0: ALC1200 Analog [ALC1200 Analog]
 Dispositivo secundário: 1/1
 Dispositivo secundário #0: subdevice #0
placa 0: Intel [HDA Intel], dispositivo 2: ALC1200 Analog [ALC1200 Analog]
 Dispositivo secundário: 1/1
 Dispositivo secundário #0: subdevice #0
placa 1: FM801AU [ForteMedia FM801-AU], dispositivo 0: FM801 [FM801]
 Dispositivo secundário: 1/1
 Dispositivo secundário #0: subdevice #0
placa 2: Cx231xxAudio [Cx231xx Audio], dispositivo 0: Cx231xx Audio [Conexant cx231xx Capture]
 Dispositivo secundário: 1/1
 Dispositivo secundário #0: subdevice #0
placa 3: U0x93a0x2620 [USB Device 0x93a:0x2620], dispositivo 0: USB Audio [USB Audio]
 Dispositivo secundário: 1/1
 Dispositivo secundário #0: subdevice #0

Com o programa de visualização de TV TVtime ligado, consegui gravar o áudio da TV analógica com programa Audacity pelo canal cx231xx Audio.

Até agora, não consegui direcionar o áudio para a saída dos altofalantes. Uma gambiarra que descobri pela rede é usar o programa sox para ler uma placa de som e direcionar a saída para outra. O código abaixo é um script para assistir TV com som no tvtime. Este workaround exige um pouco mais de processamento e resulta em uns décimos de segundos de delay — atraso de som.

#!/bin/sh

sox -r 48000 -t alsa hw:1,0 -t alsa pulse &
mpid=$!
smplayer tv:///1
kill $mpid

Já a gravação de áudio e vídeo se deu sem problemas, pela entrada S-Video e áudio RCA, com a linha de comandos:

mencoder \
-noskip \
tv:///2 \
-tv norm=PAL-M\
:device=/dev/video2\
:driver=v4l2\
:outfmt=i420\
:width=720:height=480\
:fps=29.97\
:alsa\
:adevice=hw.2,0\
:amode=1\
:buffersize=200\
:brightness=10:contrast=-25 \
-ffourcc divx \
-oac mp3lame \
-lameopts cbr:preset=128 \
-ovc lavc \
-lavcopts vcodec=mpeg4\
:vbitrate=1400\
:threads=2\
:autoaspect \
-vf dsize=4/3 \
-vf-add scale \
-vf-add kerndeint=10:0:0:1:1 \
-vf-add softskip,harddup \
-endpos 02:10:00 \
-o ~/videos/tv-svideo-sbtvd-mpeg4-mp3-$$.avi

Controle remoto

O driver reconhece automaticamente as funções do controle remoto da PlayTV Hybrid e carrega o módulo do kernel Linux rc_pixelview_002t. Aparentemente, o módulo mapeia as teclas do controle remoto às teclas de um teclado alfanumérico. Uma busca levou ao código deste módulo com as teclas que ele emite:

/*
 17  * Keytable for 002-T IR remote provided together with Pixelview
 18  * SBTVD Hybrid Remote Controller. Uses NEC extended format.
 19  */ 20 static struct rc_map_table pixelview_002t[] = {
 21         { 0x866b13, KEY_MUTE },
 22         { 0x866b12, KEY_POWER2 },       /* power */ 23 
 24         { 0x866b01, KEY_1 },
 25         { 0x866b02, KEY_2 },
 26         { 0x866b03, KEY_3 },
 27         { 0x866b04, KEY_4 },
 28         { 0x866b05, KEY_5 },
 29         { 0x866b06, KEY_6 },
 30         { 0x866b07, KEY_7 },
 31         { 0x866b08, KEY_8 },
 32         { 0x866b09, KEY_9 },
 33         { 0x866b00, KEY_0 },
 34 
 35         { 0x866b0d, KEY_CHANNELUP },
 36         { 0x866b19, KEY_CHANNELDOWN },
 37         { 0x866b10, KEY_VOLUMEUP },     /* vol + */ 38         { 0x866b0c, KEY_VOLUMEDOWN },   /* vol - */ 39 
 40         { 0x866b0a, KEY_CAMERA },       /* snapshot */ 41         { 0x866b0b, KEY_ZOOM },         /* zoom */ 42 
 43         { 0x866b1b, KEY_BACKSPACE },
 44         { 0x866b15, KEY_ENTER },
 45 
 46         { 0x866b1d, KEY_UP },
 47         { 0x866b1e, KEY_DOWN },
 48         { 0x866b0e, KEY_LEFT },
 49         { 0x866b0f, KEY_RIGHT },
 50 
 51         { 0x866b18, KEY_RECORD },
 52         { 0x866b1a, KEY_STOP },
 53 };

Já fica mais fácil programar aplicativos para usar o controle remoto. Basta configurá-lo como se recebesse as teclas de um teclado normal.

VLC

Para se ver TV digital brasileira no PC (com Linux ou Windows), a linha de comando do VideoLan é esta:

vlc dvb-t://frequency=593142857 :dvb-adapter=0 :dvb-device=0 :live-caching=300

Onde a frequência varia conforme o canal. A seguinte tabela tem todas as frequências usadas no SBDTV (ISDB-T).

# UHF channels 14 to 69
T 473142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 14
T 479142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 15
T 485142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 16
T 491142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 17
T 497142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 18
T 503142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 19
T 509142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 20
T 515142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 21
T 521142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 22
T 527142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 23
T 533142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 24
T 539142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 25
T 545142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 26
T 551142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 27
T 557142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 28
T 563142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 29
T 569142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 30
T 575142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 31
T 581142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 32
T 587142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 33
T 593142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 34
T 599142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 35
T 605142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 36
# channel 37 not used
T 617142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 38
T 623142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 39
T 629142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 40
T 635142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 41
T 641142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 42
T 647142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 43
T 653142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 44
T 659142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 45
T 665142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 46
T 671142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 47
T 677142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 48
T 683142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 49
T 689142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 50
T 695142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 51
T 701142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 52
T 707142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 53
T 713142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 54
T 719142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 55
T 725142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 56
T 731142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 57
T 737142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 58
T 743142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 59
T 749142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 60
T 755142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 61
T 761142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 62
T 767142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 63
T 773142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 64
T 779142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 65
T 785142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 66
T 791142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 67
T 797142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 68
T 803142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # channel 69

Com o VLC, para se gravar TV basta apertar no botão vermelho “Gravar”. A gravação de TV digital é fácil e rápida, pois consiste apenas em pegar o fluxo mpeg-TS (Transport Stream) e jogar para um arquivo *.TS. Não ocupa muito processamento e fica com a qualidade máxima com que foi recebida, embora os arquivos fiquem gigantescos. Mas grava tudo: o vídeo em alta resolução, o vídeo em baixa resolução para celulares, os diversos canais de áudio, as legendas, a tabela com a programação da estação de TV.

Windows

O programa para se assistir e gravar TV digital, o “Presto! PVR HD”, grava em formato NXT e revela uma grata surpresa: ele grava tudo o que foi transmitido em cada canal sem impactar o processador. Isto acontece porque o sistema nipo-brasileiro de TV Digital já veicula tudo no formato padronizado MPEG-TS (Transport Stream): vídeo em mpeg4, áudio em AAC, etc. Os programas de gravação só precisam pegar os fluxos e mandar para um arquivo. Assim, o arquivo resultante contém o programa de alta resolução (1980 x 1080 pixels) ou standard resolution (720 x 480 pixels), os programas em 1seg, para celular (320 x 240 ou 320 x 180 pixels), as diversas trilhas sonoras e as legendas.

Também notei que, mesmo que canais HDTV tenham sinais fracos e dificuldades de sintonização, as gravações feitas deste modo ficam quase perfeitas.

A desvantagem é que os arquivos de gravações de TV digital ficam enormes: em média, 230 MB por minuto. Tamanho aproximado de material gravado em formato DV ou mjpeg. Para se editar o arquivo NTX com os editores de vídeos atuais, que não entendem este formato, deve-se convertê-lo para algo mais apropriado, como DV ou mpeg4.  Um bom media player para abrir NTX e converter (salvar) em outros formatos é o VLC. Estou experimentando com o container MKV,  com áudio e vídeos originais em mpeg4. Há problemas em escolher o fluxo de vídeo. Ele pega sempre o primeiro, na lista de fluxos. Alguns canais de TV mandam a versão 1seg em primeiro, em vez da SDTV ou HDTV, e assim, o VLC não gravará a versão em HD. Deve haver uma opção para escolher o fluxo (programa) correto.

Saiba mais

 

José Antonio Meira da Rocha

Jornalista, professor das áreas de Editoração e de Mídias Digitais na Universidade Federal de Santa Maria, campus cidade de Frederico Westphalen, Rio Grande do Sul, Brasil. Doutor em Design pelo Programa de Pós-Graduação em Design (PGDesign)/Universidade Federal do Rio Grande do Sul (UFRGS), Porto Alegre, Brasil, 2023. Mestre em Mídias pela UNISINOS, São Leopoldo, RS, Brasil, 2003. Especialista em Informática na Educação, Unisinos, 1976.

View Comments

  • Pessoal, estou enfrentando um problema com esta placa (ou TV Time).. A placa funciona, mas acontece o seguinte erro intermitente:

    videoinput: Tuner present, but our request to change to
    videoinput: frequency 83250 failed with this error: No such device.
    videoinput: Please file a bug report at http://tvtime.net/

    Se eu desconecto a placa e reconecto às vezes a coisa funciona, às vezes não... A partir do momento que o TV Time abre a placa vai bem, roda direto sem apresentar problemas.. Mas se fecho o programa o negócio enrosca..

    Alguém já passou por isso? Tem ideia de como resolver?

    • Oi. Em qual usb você está conectando a Hybrid? Experimente, se for um desktop, usar as portas traseiras, pois elas tem mais potência do que as frontais (depende do seu gabinete...).

      Caso isso não resolva, veja se o dmesg está detectando corretamente o dispositivo, como o comando:

      dmesg | grep cx231xx

      se em alguma das linhas mostrar o nome da placa ou não aparecer nenhum ERROR, ela está sendo detectada sem problemas.

      Outra questão a ser vista é se você tem ou não webcam no computador ou outra placa de TV. Mesmo que só use por um momento, a detecção do linux coloca um /dev/videoX de acordo com a sua lógica. Tipo, bota a webcam e ela fica com /dev/video0, e a tv passa a ser /dev/video1. Caso aconteça, é preciso abrir o tvtime com esses valores já definidos, seja pelo /etc/tvtime/tvtime.xml ou por parametros na linha de comando.

      Outra coisa para isolar a causa: experimente usar a Hybrid em outro computador, e veja como ela se comporta. Se lá não tiver linux, use um live cd nele, ubuntu 11.04 ou outro com o kernel 2.6.38, e instale o tvtime (você pode instalar coisas na sessão do livecd, mesmo que perca se sair dele...). Veja se tem diferença. Se funcionar bem é problema da sua máquina, caso contrário é da Hybrid.

      • Ola,
        Obrigado pela pronta resposta.. Considereações:

        - O mesmo erro está acontecendo em diferentes máquinas (instalei em duas e tem o mesmo problema)...
        - Fiz o teste com mais de uma Hybrid...
        - Os erros são totalmente aleatórios (ex: estava apresentado o erro... Reiniciei o computador e voltou a funcionar - com a placa conectada na mesma porta USB - traseira)
        - Quando ocorreu o erro no dmesg era reportado um erro (assim que o erro ocorrer novamente posto aqui a mensagem). Imagino que o problema seja no driver..

        Abraço

      • Outro detalhe: o linux ainda não desmonta a Hybrid automaticamente quando tirada, para falar a verdade nem o Windows também. Se você desconecta-la com o sistema ligado, os módulos não serão todos tirados da memória, e é arriscado em danifica-la, pois alguns dados ficam armazenados dentro dela e o linux não pára de energizá-la. Ou você desliga/reinicia para tira-la ou derruba os módulos carregados e provavelmente o firmware no braço.

        Nos seus testes com o dmesg caso apareça um erro de firmware em relação a Hybrid, experimente instalar o pacote linux-firmware, pois ele vem com muita coisa relativa a placas de tv. Normalmente não é preciso, mas pode ser uma forma de resolver o seu problema...

        • ... e fica enchendo os arquivos de log com mensagens de erro. Recomendo religar o computador para não haver problema de falta de espaço em disco.

  • prof. gostaria de inf. sua
    saberia me informar se o linux ou esta placa da pixelview funciona tv digital também brasileiro no linux ubuntu 11.04 kernel 2.6.38. testei essa placa funcionou tudo ok . mas tenho interesse saber se funciona no linux tv digital e qual soft. ou programa pra tv digital linux vc recomendaria. obrigado

  • Estou sem uma antena decente, assim que arrumar esse problema, continuo a pesquisa pra mudar o canal no VLC

  • Consegui fazer funcionar com video e audio, usando o VLC.
    no menu "Media" selecionei "Open Capture Device"
    Vai abrir a janelinha do "Device Selection", então preencha "/dev/video2" na caixa "Video device name" e coloque "hw:2,0" (no meu é hw:1,0) em "Audio device name". Ali em Options, na mesma janela, selecione "PAL-M", clique em Play e divirta-se. Se você quiser usar RCA ou S-video, continue seguindo o coelho branco, clicando em "Advanced optons..." para mais uma janela. Lá temos 2 campos interessantes, "Input" e "Audio input". São os mesmos valores que usaria na linha de comando, no caso do RCA, preencha os 2 campos com o valor "1". Só clicar OK e Play.

      • Dúvida: como acesso os canais? Pois aqui tento usar os botões de avançar e retroceder e nada. Fica só uma tela fora do ar e um som cortado.

          • Por enquanto nenhuma conclusão nova, assim que encontrar algo novo postarei aqui.

          • Perdoe a demora, fui tentar uma nova configuracao de renderização aqui e consegui travar o meu kubuntu (aquele ubuntu com KDE). Tambem não consegui trocar o bendito do canal, estou fuçando aqui.

          • Rssss. O meu netbook deu uma queda na interface gráfica logo que fechei o vlc.... Mas voltou em instantes.
            De todo jeito, é massa ter mais uma maneira de botar a Hybrid para funcionar. Parabéns!

  • POR FAVOR ALGUÉM SABE SE A PLACA DE TV DIGITAL HYBRIDA VISUS TV EXTREME USB JÁ FUNCIONA NO UBUNTU 11.04 E NO LINUX EM GERAL?

    • A menos que tenha tido suporte antes, aparentemente não:

      http://br-linux.org/2010/tv-digital-brasileira-no-linux-mais-drivers-experimentais-disponiveis/

      Tente usar o comando

      ls /dev/video*

      e veja se aparece alguma coisa. Se vc tiver webcam ou semelhante, /dev/video0 aparecerá. Se não tiver mais nada, veja se aparece um /dev/video0, então pelo menos em parte o visus foi detectado. Caso não apareça nada, é possível que o seu dispositivo ainda não seja reconhecido Procure ainda nas saídas de:

      lsusb

      e

      dmesg

      E veja se aparece alguma coisa em relação ao seu dispositivo. Tente pesquisar em http://www.linuxtv.org ou colocando no google com o modelo de seu aparelho na internet, do jeito que tem na caixa, como por exemplo:

      visus extreme hybrid linux

  • José Antonio Rocha, eu sintetizei um artigo no vivaolinux com todos os passos necessários para configurar essa placa. Usei o seu script para completar a parte do som. Você dá permissão para que eu use o seu script? Caso não, me avise para que eu dê baixa de alguma forma lá no vol.

    Coloquei uma versão pdf aqui, para ver como ficou:

    https://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=0Bwm2iXamEBK6M2IzMmJkZTUtY2RlNy00ZDQxLTg3YWQtZDk3YTJjYjlhYmNm&hl=pt_BR

    • Pessoal, estive revendo os passos do meu artigo, e há um problema na parte na criação do script: na linha:

      sox -r 48000 -t alsa hw1,0 -t alsa pulse &

      Faltou colocar os 2 pontos, que ficará assim:

      sox -r 48000 -t alsa hw:1,0 -t alsa pulse &

    • amigo fiz conforme a sua configuração e no mommento que executo o tvsom.sh me aparece este erro no terminal:
      A correr tvtime 1.0.2.
      A ler configuração a partir de /etc/tvtime/tvtime.xml
      I/O warning : failed to load external entity "/home/laboratorio/.tvtime/tvtime.xml"
      I/O error : Permission denied
      I/O error : Permission denied
      Incapaz de alterar o dono de /home/laboratorio/.tvtime/tvtime.xml: Permissão negada.
      ALSA lib pcm.c:2212:(snd_pcm_open_noupdate) Unknown PCM hw2,0
      sox FAIL formats: can't open input `hw2,0': snd_pcm_open error: No such file or directory
      videoinput: Can't free frame 0: Não há espaço disponível no dispositivo
      videoinput: Can't free frame 1: Não há espaço disponível no dispositivo
      videoinput: Can't free frame 2: Não há espaço disponível no dispositivo
      videoinput: Can't free frame 3: Não há espaço disponível no dispositivo
      videoinput: Can't free frame 0: Não há espaço disponível no dispositivo
      videoinput: Can't free frame 1: Não há espaço disponível no dispositivo
      videoinput: Can't free frame 2: Não há espaço disponível no dispositivo
      videoinput: Can't free frame 3: Não há espaço disponível no dispositivo
      mixer: find error: Sucesso
      mixer: Can't open mixer default, mixer volume and mute unavailable.
      mixer: Can't open device default/Line, mixer volume and mute unavailable.
      videoinput: Can't free frame 0: Não há espaço disponível no dispositivo
      videoinput: Can't free frame 1: Não há espaço disponível no dispositivo
      videoinput: Can't free frame 2: Não há espaço disponível no dispositivo
      videoinput: Can't free frame 3: Não há espaço disponível no dispositivo

      • Faça a correção no script:

        sox -r 48000 -t alsa hw:2,0 -t alsa pulse &

        Faltou os 2 pontos...
        Sinto muito.

        • Toda a configuração foi no arquivo /etc/tvtime/tvtime.xml, mas a configuração funciona também no arquivo local.
          Em algum momento você alterou o .tvtime/tvtime.xml como root (usando sudo ou su?)? Pois pode ser que as permissões tenham ficado sendo do root.
          Se o usuário de sua máquina é laboratorio, você pode pegar de volta esse arquivo para este usuário, com:

          sudo chown laboratorio:laboratorio .tvtime/tvtime.xml

          Aí tenta abrir de novo.

          Observe também se o tvtime mesmo está caindo, pois se sim recomendo reinstalá-lo para recriar os arquivos de configuração.

          Outra coisa, aparentemente o sox em seu sistema não está achando o som da Hybrid. Olhe atentamente para a lista de:

          cat /proc/asound/cards

          e veja qual a linha que tem alguma coisa com cx231xx… O número que começar lá é o que você usará no hw.

          Observe que o tutorial é com base no Ubuntu 11.04, em outros sistemas talvez sejam necessários passos a mais.

      • Olá, Márcio!
        Pode ser problema de permissões de acesso a arquivo: "I/O error : Permission denied"

    • Eu mudei a configuração do arquivo /etc/tvtime/tvtime.xml, mas a configuração funciona também nesse local.
      Em algum momento você alterou o .tvtime/tvtime.xml como root (usando sudo ou su?)? Pois pode ser que as permissões tenham ficado sendo do root.
      Se o usuário de sua máquina é laboratorio, você pode pegar de volta esse arquivo para este usuário, com:

      sudo chown laboratorio:laboratorio .tvtime/tvtime.xml

      Aí tenta abrir de novo.

      Observe também se o tvtime mesmo está caindo, pois se sim recomendo reinstalá-lo para recriar os arquivos de configuração.

      Outra coisa, aparentemente o sox em seu sistema não está achando o som da Hybrid. Olhe atentamente para a lista de:

      cat /proc/asound/cards

      e veja qual a linha que tem alguma coisa com cx231xx... O número que começar lá é o que você usará no hw.

      Observe que o tutorial é com base no Ubuntu 11.04, em outros sistemas talvez sejam necessários passos a mais.

    • Mas seu sistema tem só essa placa como dispositivo de vídeo? No meu sistema, um netbook, tem webcam (/dev/video0), o que faz com que a Hybrid fique como /dev/video1. Sendo assim, o comando scan não consegue localizar nenhum canal... Erro de tuning failed, e canais.conf continua vazio...

      • Não tenho TV digital aqui, mas deve haver um meio de forçar o scan procurar em outro dispositivo.

    • Graaaande dica, Erick!
      Em Frederico Westphalen, RS, ainda não temos TV Digital, eu não tinha testado.

      • Opa... Ficou legal.. :D
        Eu tenho duas placas: A PixelView SBTVD normal e a Hybrid... A Hybrid fica bem melhor... O sinal fica muito melhor - quase não há perda de frames.. Já a outra tem muita perda de pacotes...
        Quanto a essa questão do áudio, alguem conseguiu solucionar?

        Mudando um pouco de assunto... Vc sabe se é possível rodar o TV TIME com duas placas dessas ao mesmo tempo? Gostaria de poder assistir mais de um canal ao mesmo tempo (tipo um PIP)...

        Vc saberia como capurar a imagem da tv na forma de uma "webcam"? Não quero fazer streaming, mas gostaria de manipular uma imagem e tem muita API que captura webcams.. entao facilitaria um pouco a vida..

        • A questão do áudio talvez possa ser resolvida recompilando o kernel com o Open Sound System (OSS). Ou esperar que a Canonical implemente um novo substituto para o OSS.

          A questão do TV Time é de se testar. Você conseguiu sintonizar TV digital com ele?

          Para capturar TV analógica como webcam é só definir qual dispositivo a câmera vai mostrar. É tudo Video for Linux (v4l2), mesmo...

          • A TV Digital só rodou no VLC (vídeo e áudio 100%).. Não sei se o TV Time tem suporte a DVB (embora o nosso padrão seja ISDB-T, o V4L utiliza as mesmas APIs que servem pro DVB).

            Vou comprar mais um tuner Hybrid pra fazer o teste se ele roda com mais de um ao mesmo tempo... Vou dar uma estudada também nas configurações do TV Time..

            Quanto à câmera eu até consegui fazer funcionar, mas pra mim ainda não está muito claro como "escolher o canal"... Eu rodei o TV Time e coloquei pra capturar a Globo. Aí mandei capturar a Webcam e deu certo... Mas não sei como interagir ainda diretamente com o V4L, pra eu poder controlar o canal através da minha aplicação..

          • Sua ideia para duas placas de TV pode funcionar. O comando para o TV Time é algo como "tvtime -d /dev/video1".
            Para sintonizar o canal por linha de comando, a documentação do mencoder diz:
            −tv <option1:option2: ...> (TV/PVR only)

            This option tunes various properties of the TV capture module. For watching TV with MPlayer,
            use ’tv://’ or ’tv://<channel_number>’ or even ’tv://<channel_name> (see option channels for
            channel_name below) as a movie URL. You can also use ’tv:///<input_id>’ to start watching a
            movie from a composite or S-Video input (see option input for details).

            [...]

            channels=<chan>−<name>[=<norm>],<chan>−<name>[=<norm>],...

            Set names for channels. NOTE: If <chan> is an integer greater than 1000, it will be
            treated as frequency (in kHz) rather than channel name from frequency table.
            Use _ for spaces in names (or play with quoting ;-). The channel names will then be
            written using OSD, and the slave commands tv_step_channel, tv_set_channel and
            tv_last_channel will be usable for a remote control (see LIRC). Not compatible with the
            frequency parameter.
            NOTE: The channel number will then be the position in the ’channels’ list, beginning
            with 1.
            EXAMPLE: tv://1, tv://TV1, tv_set_channel 1, tv_set_channel TV1

          • se há duas placas de captura, é preciso ver a questão do vbio usado por cada uma.... Mesmo usando tvtime -d /dev/video1. Uma solução pode ser:

            tvtime -d /dev/video1 -b /dev/vbi1

            ou mexer dentro de /etc/tvtime/tvtime.xml e alterar nas seções corretas esses dispositivos.

  • Pessoal,
    Desculpe a minha ignorância, mas não consegui entender direito como interagir com o driver.
    No post é passada uma linha de comando para gravação da entrada S-Video (mencoder...), mas não entendi qual parâmetro "informa" ao driver qual é o fluxo que se deseja (TV analógica, digital ou S-Video).
    Alguem saberia como eu consigo sintonizar um canal através da linha de comando?

    • Olá, Erick!
      O parâmetro tv:///2 indica entrada S-Video. Mas este método não serve para TV Digital.

  • Oi. Conseguir usar a tv desse dispositivo com o tvtime, mas no caso do rádio o /dev/radio não aparece. Você consegui ter acesso a este recurso?

    • Olá, Lindrix!
      Não tenho acesso. Acho que /dev/radio é um dispositivo OSS, sem suporte no Ubunttu 10, a não ser que você recompile o kernel com este sistema de som.

      • Ou seja, cai no mesmo problema... Eitcha. Pelo menos a imagem está aparecendo.
        Valeu mesmo pelo tutorial de analise. Só com ele fiz o adaptador funcionar.

  • Parabéns pelo artigo!
    Basicamente consegui ver a tv via mplayer (sem áudio) e gravar via mencoder.
    O áudio consegui contornar ligando os cabos na entrada "audio in" de um home theater ao invés.da entrada da pixelview
    Ainda não consegui ver a TV digital (SBTVB).
    Alguma ajuda?

    Valeu!

    • Obrigado, Ricardo!

      O problema do áudio pode ser do Ubuntu, que desistiu de compilar o OSS no kernel desde a versão 10.04 e não colocou nada no lugar. Um workaround (baita gambiarra) é usar o sox num script para ler um canal de áudio e mandar pro pulseaudio:

      #!/bin/sh

      sox -r 48000 -t alsa hw:1,0 -t alsa pulse &
      mpid=$!
      smplayer tv:///1
      kill $mpid

      Não tenho canal digital aqui para testar TV Digital, mas tente instalar o totem-plugin-dvb-deamon, que instalará também as dvb-apps, com configurador de chip de TV digital, scan de canais e agendador de gravações. Talvez dê pra assistir TV no Totem.

      • Outro utilitário que permite fazer isso é o alsaloop, que permite até ajustar a latência:

        alsaloop -C hw:1,0 -P hw:0,0 -t 50000

        Aqui, no caso, ajustei a latência para 50ms.

        Entretanto, o melhor seria que o próprio tvtime fizesse isso. Eu fiz um patch para o tvtime do Ubuntu detectar o áudio dessa placa sozinho. Agradeceria se quem tivesse este mesmo problema entrasse em https://bugs.launchpad.net/ubuntu/+source/tvtime/+bug/963036 e clicasse no link "This bug affects you".

        • Massa! Já tinha ouvido do suporte ao alsa pelo tvtime, mas não dessa rotina de detecção. O pacote do tvtime 1.0.2-6 tem ela disponível?

          Sim, cliquei lá no launchpad, e está marcado como confirmado. Gostaria também que o suporte a tv digital ficasse mais fácil. Pelo jeito com o vlc ainda é bem trabalhoso...

          • Não está disponível ainda não, submeti o bug hoje. Vamos ver se eles aprovam logo o patch para entrar na próxima versão do pacote.

            O que facilitaria bastante o suporte a TV digital seria se na interface do próprio VLC tivesse uma forma de escanear os canais, mas aí teria que discutir com o pessoal do VLC como eles acham que isso ficaria melhor na interface. Não sei se já tem alguém trabalhando nisso.

          • Entendi.
            Acredito que o pessoal do vlc não se oporia a inclusão dessa função, desde que alguém faça pra eles incluirem e disponibilizarem.
            A questão do suporte de placas de tv, e inclusive as de tv digital, é um problema que me parece ser causado provavelmente do pouco uso desses hardwares na maioria dos países que trabalham com linux. As distros assim deixam de incluirem rotinas de autodetecção e configuração desses dispositivos.

            Acho isso pois fico sem acreditar que a equipe original de um programa como o TVtime deixaram de desenvolvê-lo.

            Mas é gratificante saber que há pessoas como você para dá um gás nesse programa.

            Eu mesmo tentei entender o código para modificar alguma coisa lá, mas não consegui...

          • Quem mantém a parte de TV e Rádio do Linux é o brasileiro Mauro Chehab. Alguém teria contato com ele?

          • O contato dele:

            mchehab@redhat.com

            Mas na vez que tentei entrar em contato com ele sobre uma placa de tv anterior, não tive resposta.

            Mas no boom da tv digital, ele apareceu no brlinux e anunciou o suporte para muitas placas de tv:

            http://br-linux.org/2010/tv-digital-brasileira-no-linux-mais-drivers-experimentais-disponiveis/

            A questão pelo que entendi, a hybrid é aceita sem problemas pelo kernel. No caso Chehab só poderia dá alguma dica para melhorar alguma coisa ou citar aplicações de tv, acho, mas as distros e desenvolvedores de aplicações é que precisam modernizar o suporte aos módulos corretos de tv.
            Exemplo: o ubuntu usa o pulse para o áudio, mas o alsa é quem mostra o dispositivo de som da tv. Como o tvtime disponível nos repositórios atuais só conversa com oss, a tv fica muda.
            Espero que o pessoal libere o tvtime com o fix de Paulo Matias.

      • Obrigado pelo script. Aqui no Ubuntu 11.04 só funcionou com o som também por causa dele, onde só mudei o nome do player de tv, no caso coloquei para tvtime. O sox tive de instalar também com apt-get install sox. Se desse para fazer um patch para o tv time... Fica para quando aprender c ou c++... rsssss

        • Legal que funcionou. É bem gambiarra, pois consome recursos de processamento e dá um atraso de alguns décimos de segundo no áudio. Mas funciona.

          • O peso é esse, esse modo gambiarra, pois fica difícil de saber se vai rodar sem problemas se o script for chamando por um atalho do gnome, o que vou tentar daqui a pouco. Vou tentar também instalar o kernel-rt, para ver se essas paradas no som diminuem...
            Agora uma solução mais completa será uma recompilagem do kernel para ativar o oss... O nó é fazer isso com um Atom N270.... vigi.

          • O procedimento com o vlc falhou comigo antes desse do script, provavelmente por causa do /dev/video0 está para a webcam... O scan do dvb-apps (dvb-tools para ubuntu/debian) não acha nenhum canal assim...

            O curioso é como o tvtime é excelente para mostrar a imagem e é tão defasado... Parece que o projeto parou em 2005... Não tem uma rotina de detecção dos dispositivos, sendo preciso arrumar manualmente. Ainda é baseado em oss, que várias distros não usam... se bem que o pulse audio é bem pesado em comparação com o alsa puramente.
            Em outros tv players (xawtv e zapping) o som não rola diretamente e o vídeo é muito ruim...

      • Muito obrigado! O "workaround" funcionou perfeitamente! Quanto à TV digital instalei o totem-plugin-dvb-deamon, mas o mesmo não encontrou nenhum canal. No windows funciona direitinho, mas o processo de gravação do Linux via mencoder é muito melhor, pois já salvamos em formato avi enquanto que o programa que acompanha a placa salva num formato não muito amigável (TS).

        Até mais!

Share
Published by
José Antonio Meira da Rocha

Recent Posts

Sempre faça um fotão

Colheita de soja. Foto: Wenderson Araujo/Trilux Fotógrafos de mídias rurais já perderam a conta das…

1 year ago

A corrupção dos tolos

João Batista MezzomoAuditor fiscal O que está por trás de tudo o que está acontecendo…

4 years ago

Naomi who? Naomi Wu!

A.k.a. "SexyCyborg". A mulher do século 21. Naomi Wu testa seu iluminador de implantes na…

5 years ago

Raspagem de dados

A principal ferramenta do jornalista de dados é a planilha, tipo LibreOffice Calc, M.S. Excel…

5 years ago

Que estratégia político-terapêutica pára um governo deliroide?

Rita Almeida, 9 de março de 2019 Psicóloga Rita Almeida: não delirantes, mas deliroides. Não…

6 years ago

Sua tia não é fascista, ela está sendo manipulada

Rafael Azzi5 de outubro de 2018 Você se pergunta como um candidato com tão poucas…

6 years ago