sexta-feira, 16 de setembro de 2011

PixelView PlayTV USB SBTVD no Ubuntu


O kernel 2.6.38 tem suporte ao adaptador. Como o Ubuntu já vem com os firmwares, tudo funciona out-of-the-box. Basta plugar.

usb 2-4: new high speed USB device using ehci_hcd and address 3
dvb-usb: found a 'Prolink Pixelview SBTVD' in cold state, will try to load a firmware
dvb-usb: downloading firmware from file 'dvb-usb-dib0700-1.20.fw'
dib0700: firmware started successfully.
dvb-usb: found a 'Prolink Pixelview SBTVD' in warm state.
dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.
DVB: registering new adapter (Prolink Pixelview SBTVD)
DVB: registering adapter 0 frontend 0 (DiBcom 8000 ISDB-T)...
DiB0070: successfully identified
Registered IR keymap rc-dib0700-nec
input: IR-receiver inside an USB DVB receiver as /devices/pci0000:00/0000:00:13.2/usb2/2-4/rc/rc1/input5
rc1: IR-receiver inside an USB DVB receiver as /devices/pci0000:00/0000:00:13.2/usb2/2-4/rc/rc1
dvb-usb: schedule remote query interval to 50 msecs.
dvb-usb: Prolink Pixelview SBTVD successfully initialized and connected.

Usei como referência: http://www.guax.net/blog/2009/12/review-receptor-isdb-t-dibcom-stk8096gp-tv-digital-do-brasil/

Crie um arquivo com o conteúdo

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

que lista todas as frequências permitidas pelo nosso padrão de TV digital. Salve com qualquer nome (segui o blog linkado acima, usando ch.conf).

Instale o pacote dvb-apps:

sudo apt-get install dvb-apps

Na pasta onde o arquivo ch.conf estiver, rode:

scan ch.conf > channels.conf

Isso varrerá todas as frequências listadas no arquivo ch.conf procurando quais canais estão disponíveis. É normal aparecer messagens de aviso e o processo demora um pouquinho. Quando terminado, o arquivo channels.conf terá algo assim:

Record HD:515142857:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:HIERARCHY_NONE:273:274:51904
Record 1seg:515142857:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:HIERARCHY_NONE:641:643:51928
SBT HD:557142857:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:HIERARCHY_NONE:513:514:51776
SBT 1Seg:557142857:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:HIERARCHY_NONE:257:258:51800
Band HDTV:581142857:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:HIERARCHY_NONE:273:274:51712
Band 1SEG:581142857:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:HIERARCHY_NONE:529:530:51737
RBS TV HD:593142857:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:HIERARCHY_NONE:273:274:51648
RBS TV 1seg:593142857:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:HIERARCHY_NONE:529:530:51672

Agora, abra esse arquivo com o VLC e pronto, você terá todos os canais na playlist dele. Infelizmente, o VLC disponível no repositório do Ubuntu tem um bug muito grave, um vazamento de memória monumental, que torna seu uso quase inviável:
https://bugs.launchpad.net/ubuntu/+source/vlc/+bug/743323

E tem mais um problema, que é um chiado no áudio de vez em quando (para depois de um tempo).

Enquanto o bug não dá as caras...
Vá em "Exibir -> Lista de Reprodução". Clique com o botão direito, "Adicionar Arquivo...", "Todos os arquivos" e selecione o channels.conf. Abra-o na playlist com duplo clique e o primeiro canal começará a ser exibido automaticamente. Para trocar de canal, volte à playlist que a todos estarão lá. Outra opção é criar um atalho personalizado com o comando vlc /caminho/para/channels.conf

Como o vídeo full HD do ISDB-T é entrelaçado (1080i), vá em "Vídeo -> Desentrelaçamento" e coloque "Automático".


Full HD

1seg

Nosso padrão de TV digital usa vídeo MPEG-4 AVC ("H.264") Profile Main (full HD) ou Baseline (1seg); áudio HE-AAC v2 com encapsulamento LATM/LOAS; container MPEG-TS.

Como quem está decodificando o H.264 1080i é a libavcodec do FFmpeg, o uso de processamento vai lá para cima. Na versão de desenvolvimento do FFmpeg (pós-0.6) várias otimizações foram adicionadas na decodificação de H.264. Daqui a seis meses, se tudo der certo, o Ubuntu virá com a versão 0.7 (do fork Libav) e o consumo de processamento será menor (maldita forma de distribuição de programas!). Para quem não quiser colocar esse peso sobre processador, pode assistir aos canais "1seg", que possuem resolução bem menor (320x240) e ficam leves. Obviamente em tela cheia fica imprestável, mas pode ser uma saída. Se o VLC tem alguma forma de usar aceleração via GPU eu não sei.


Em teoria, o MPlayer, nas versões recentes (1.0rc4 ou mais nova), suporta o ISDB-T. Basta copiar o arquivo channels.conf para a pasta ~/.mplayer e chamar o programa com:

# sintoniza o primeiro canal listado no arquivo channels.conf
# troque de canal usando as teclas H e K
mplayer dvb://
# para sintonizar um canal específico
mplayer "dvb://NOME DO CANAL"
# exemplo:
mplayer "dvb://Band HDTV"

Disse "em teoria" pois aqui não funcionou. Não aparece nada. Mesmo usando a última versão de desenvolvimento do PPA mplayer-daily.

Já o suporte em tocadores baseados no GStreamer ainda não está pronto. Alguns patches entraram apenas recentemente e demorarão algum tempo para chegarem às distribuições. Veja: http://cascardo.info/blog/SBTVD_e_Gstreamer/

Em teoria (novamente...) é possível capturar o strem MPEG-TS bruto e salvar no HD, sem usar nenhum programa tocador. Para isso, "congele" num determinado canal usando o tzap:

tzap -r -c ~/.mplayer/channels.conf "Band HDTV"

O tzap ocupará o terminal e manterá o adaptador "congelado" no canal especificado até ser finalizado com Ctrl+C. Em outro terminal, copie o stream usado cat, cp, dd, etc.

Exemplo:

cat /dev/dvb/adapter0/dvr0 > novela.ts
# ou
cp /dev/dvb/adapter0/dvr0 novela.ts
# etc...
# vai copiando até ser cancelado com Ctrl+C

Contudo não obtive sucesso. O arquivo salvo não é tocado pelo MPlayer SVN, nem pelo Totem. O FFmpeg-git, quando tento converter para outro formato/codec, até detecta o stream de vídeo (com vários erros na decodificação), mas não o áudio.

Resumo: o adaptador PixelView PlayTV USB SBTVD funciona bem com o VLC. Falta o VLC em si funcionar bem agora...

E meu muito aobrigado ao Mauro Chehab por ter desenvolvido o driver!
http://br-linux.org/2009/sbtvd-assistindo-tv-digital-aberta-brasileira-com-o-vlc-no-linux/

Ah, com o controle remoto eu nem mexi por enquanto.

Nenhum comentário:

Postar um comentário