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

 

About 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.