No ambiente Windows, os melhores programas para se gravar TV são o VirtualDub e o VirtualVCR com os codecs FFdshow. Para se conseguir boa qualidade no vídeo gravado da TV é necessário se fazer o desentrelaçamento dos dois campos que formam a imagem de TV. São poucos os codecs que oferecem este recurso com boa qualidade. Nos programas baratos que acompanham as placas de TV, o desentrelaçamento é feito por interpolação das linhas dos dois campos. Isto provoca o “borramento” vertical das imagens, como se a câmera estivesse míope, fora de foco.
Os melhores filtros para desentrelaçamento corrigem as diferenças de campos de imagem apenas quando isto é necessário, em áreas que estão em movimento, como olhos e bocas das pessoas, ou objetos em movimentos horizontais. No FFdshow, uso o filtro Yet Another Deinterlacer ou ToMosComp, que me deram melhores resultados.
Quanto à compressão, uso mpeg4 com qualidade 90 no FFdshow, que grava com Variable Bit Rate (VBR). Isso gera imagens com média de 2200 kbps. No entanto, o VirtualDub provoca dessincronia entre vídeo e áudio, quando usa VBR. Para sincronia entre som e imagem, preciso usar Constant Bit Rate (CBR), o que gera imagens de pior qualidade e arquivos grandes. Já o VirtualVCR gera alguma dessincronia em VBR, mas não muito.
Em Linux, pesquisei bastante e fiz testes de gravação que resultaram em vídeos com qualidade e compressão bem melhores que em Windows.
Primeiro tentei o streamer, com uma linha de comandos bem simples:
streamer -t 2:00:00 -s 720x480 -r 29.97 -o tv.avi -f mjpeg -j 70 -F stereo
Este comando grava vídeo em formato mjpeg, que é bom para edição, pois grava sempre quadros inteiros e facilita a edição em qualquer ponto. No entanto, não desentrelaça e a compressão não é boa: o arquivo resultante fica em torno de 60 MB por minuto. Teria de ser pós-processado mais tarde.
Além disso, o streamer usa a arquitetura de som OSS, que está sendo abandonada no Linux em favor da arquitetura ALSA.
Depois, pesquisei o mencoder. Para facilitar o estudo do enorme manual do mencoder em formato “man page”, usei um comando para gerar PDF:
man -t `man -w mencoder` | ps2pdf - mencoder.pdf
A grande vantagem do mencoder é a enorme quantidade de filtros e codecs disponíveis. Através de testes, descobri que a seguinte linha de comandos gera os melhores resultados de vídeo gravado pela placa de TV. O arquivo resultante fica com boa qualidade visual, com sincronia entre áudio e vídeo e com 10 MB por minuto, em média.
mencoder \ tv:///2 \ -o ~/tv-$$.avi \ -oac mp3lame \ -lameopts cbr:preset=192 \ -ovc lavc \ -lavcopts vcodec=mpeg4\ :vbitrate=1500\ :autoaspect\ :keyint=120:sc_threshold=-50000:vb_strategy=2 \ −ffourcc divx \ -vf dsize=4/3 \ -vf-add kerndeint=10:0:0:1:1 \ -tv norm=PAL-M\ :driver=v4l2\ :alsa\ :adevice=hw.0,0\ :width=744\ :height=480\ :fps=29.97\ :outfmt=i420\ :brightness=10\ :contrast=-20\ :amode=1\ :buffersize=300
A explicação de cada parâmetro é a seguinte:
Juntei estes comandos num arquivo shell e coloquei na barra do Gnome. Para iniciar a gravação, basta um clic no ícone do programa.
Estes comandos podem ser colocados no cron (agendador de tarefas do Linux) para programar gravações. O programa gnome-scheduler ajuda bastante a programar o cron. Neste caso, é bom colocar mais alguns parâmetros para limitar o tempo de gravação:
-endpos 02:10:00 \
E mais uma linha, depois desta enorme linha de comandos, para avisar sobre fim da gravação (Ubuntu), já que, como cron job, a gravação roda invisível:
notify-send -i /usr/share/icons/gnome-colors-common/scalable/apps/smplayer.svg "FIM DE GRAVAÇÃO" "Terminou a gravação do satélite"
Com o mencoder para Windows, depois de muitas tentativas, consegui fazer funcionar com a seguinte linha de comando:
mencoder tv:///1 ^ -tv driver=dshow^ :device=0:input=5^ :adevice=4:audioid=1^ :norm=PAL-M^ :fps=29.97^ :outfmt=rgb24^ :width=744:height=480^ :brightness=10:contrast=-20^ :buffersize=200 ^ -vf dsize=4/3 ^ -vf-add flip ^ -vf-add kerndeint=10:0:0:1:1 ^ -ovc lavc ^ -lavcopts vcodec=mpeg4:vbitrate=3000:autoaspect ^ -ffourcc XVID ^ -oac mp3lame ^ -lameopts fast:preset=medium ^ -o .\tv-svideo-record (%DATE%-%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%).avi
Ao copiar os parâmetros acima, cuidado com os espaços. Eu adicionei “^” para poder quebrar as linhas.
Bonus track: o arquivo de vídeo é gravado com a data e hora adicionadas ao nome graças a truques do DOS.
O mencoder só gravou bem da placa de TV com codec lavc, sem dúvida uma biblioteca de excelente qualidade. O driver deve ser dshow, um driver experimental, e o espaço de cor, rgb24. A maior dificuldade, que resolvi por tentativa e erro, foi configurar os números dos dispositivos de áudio e vídeo. Os números variam de acordo com os dispositivos em cada PC e também num mesmo PC, quando se conecta e desconecta uma webcamera.
O vbitrate de 3000 dá uma ótima qualidade gerando 20MB de arquivo por minuto. Para 11MB por minuto, eu uso vbitrate=1400, resultando em qualidade razoável.
No entanto, o mencoder para Windows não sincroniza o som com o vídeo e é instável. Embora só ocupe 20% do processamento de um Intel Dual-Core de 2,5GHz, qualquer processo que interrompa a gravação provoca a perda sequencial de frames, arruinando a gravação dali por diante.
Depois de se aprender os ajustes necessários na captura de vídeo, fazer estas tarefas por linha de comando é bem mais fácil do que se usar programas proprietários com interface gráfica.
Colheita de soja. Foto: Wenderson Araujo/Trilux Fotógrafos de mídias rurais já perderam a conta das…
João Batista MezzomoAuditor fiscal O que está por trás de tudo o que está acontecendo…
A.k.a. "SexyCyborg". A mulher do século 21. Naomi Wu testa seu iluminador de implantes na…
A principal ferramenta do jornalista de dados é a planilha, tipo LibreOffice Calc, M.S. Excel…
Rita Almeida, 9 de março de 2019 Psicóloga Rita Almeida: não delirantes, mas deliroides. Não…
Rafael Azzi5 de outubro de 2018 Você se pergunta como um candidato com tão poucas…
View Comments
Olá José,
Segui seu tutorial e o mencoder chegou a gravar, porem só grava uma tela azul.
Estou utilizando o mencoder para gravar no canal a/v, pois na verdade quero gravar alguns filmes de familia que tenho em vhs.
No Mplayer ele mostra direitinho a transmissão, mas no momento que faço que faço a gravação fica tela azul no video.
Estou usando uma placa da iEi modelo ivc-200, segui alguns tutoriais para configurar esta placa corretamente, os parametros que estou utilizando são: card=102 tunner=-1.
Podiria me ajudar com está duvida?
Obrigado
Rafael
Olá, Rafael!
Como não conheço esta placa, não tenho como ajudá-lo. O jeito é você continuar a hackeá-la com parâmetroso diferentes. Tente mudar o padrão de cor (RGB, YUYV etc). Descubra com quais padrões ela trabalha com o comando "v4l-info".
Oi José,
Segui o seu conselho e instalei o v4l, peguei as informações necessarias, porem ainda não consegui gravar, no mplayer ela mostra o canal direitinho, com este tutorial instalei a placa e os drivers estão corretos http://mstr.ueuo.com/bttv/instalar.php?id=bttv&c=102&i=a, eu consegui gravar no xawtv, porem gostaria de gravar no mencoder, o video está funcionando corretamente no mplayer e os videos que estou gravando não tem som mesmo, só preciso gravar imagens no canal 0 da placa, a placa usa tanto o RGB como o YUYV. Caso queira posso mandar os arquivos de configuração.
Meu email é rafael@cortex.com.br
Obrigado
Olá, Rafael!
Gravar no xawtv é uma excelente notícia! A placa está funcionando OK! Mas, realmente, gravar no mencoder é melhor. Agora, você só terá que estudar o manual do mencoder (man mencoder) e experimentar as diversas opções que ele tem.
Ola Mauro, o tutoria caiu como uma luva, tava louco pra fazer gravações mas não conseguia, cheguei a usar o xawtv mas não serviu, pelas instruções esse tutorial usa o mencoder do MPlayer, vi que tem no KMplayer uma interface GUI com o sintonizador de tv e tambem opção pra gravar clicando no botão de gravar so não consegui fazer funcionar, vc saberia como fazer? outra coisa no caso de iniciar uma gravação usando os comandos do tuto, depois que desejar parar a gravação qual e o comando a ser dado pra parar no terminal?
Olá, Ricaardo!
Não conheço o Kmplayer, por isso não posso ajudá-lo nisto. Mas, para parar o mencoder no terminal, use o CTRL+C umas duas ou três vezes.
Amigo, não tem jeito de eu fazer minha placa de captura, que é igual a sua, funcionar...tou já desistindo...humpf...
Tutorialzinho para configurar PixelView PlayTV Pro no Ubuntu:
1. Chame o terminal (Menu "Aplicativos > Acessórios >Terminal"
2. Edite o arquivo de carga de módulos ("drivers", no dialeto Windows):
2.1. sudo gedit /etc/modules ("sudo" pedirá a senha para editar como root)
2.2. Escreva na última linha"bttv", grave e feche o arquivo
3. Crie o arquivo de parâmetros de módulos:
2.1. sudo touch /etc/modprobe.d/bttv.conf
4. Edite o arquivo:
4.1. sudo gedit /etc/modprobe.d/bttv.conf
5. Cole as linhas:
# i2c
alias char-major-89 i2c-devb
options i2c-algo-bit bit_test=1
# bttv
alias char-major-81 bttv
# TV Card Prolink PlayTV Pro
options bttv card=37 tuner=2 radio=1 adc_crush=0 combfilter=1 full_luma_range=0 gbuffers=32
6. Carregue o módulo (ou reinicie o PC):
6.1. sudo modprobe bttv
Isto deve resolver. Se não der certo, Verifique os arquivos de logs para achar mensagens de erro:
Menu "Sistema > Administração > Visualizador de arquivos de log > syslog"
Sucesso!
Olá, Mauro!
Ela funciona com Windows? Qual seu sistema operacional?
Excelente tutorial, parabéns.
Grande abraço,
Guilherme Rodrigues Machado
Curitiba, PR
Valeu, Guilherme!
Me entusiasmei e melhorei um pouco.