7.4. Reprodução de Vídeo

Contribuído porRoss Lippert.

Antes de configurar a reprodução de vídeo, determine o modelo e o chipset da placa de vídeo. Embora o Xorg suporte uma ampla variedade de placas de vídeo, nem todas oferecem um bom desempenho de reprodução. Para obter uma lista de extensões suportadas pelo servidor Xorg usando a placa, execute xdpyinfo enquanto o Xorg está sendo executado.

É interessante ter um arquivo de teste MPEG pequeno para avaliar vários players e opções. Como alguns aplicativos de DVD procuram por mídia DVD em /dev/dvd por padrão, ou possuem esse nome de dispositivo codificado neles, pode ser útil fazer um link simbólico para o dispositivo adequado:

# ln -sf /dev/cd0 /dev/dvd

Devido à natureza do devfs(5), os links criados manualmente não persistirão após a reinicialização do sistema. Para recriar o link simbólico automaticamente quando o sistema inicializar, adicione a seguinte linha ao arquivo /etc/devfs.conf:

link cd0 dvd

A decriptografia do DVD invoca certas funções que exigem permissão de gravação para o dispositivo DVD.

Para melhorar a interface de memória compartilhada do Xorg, recomenda-se aumentar os valores dessas variáveis ​​sysctl(8):

kern.ipc.shmmax=67108864
kern.ipc.shmall=32768

7.4.1. Determinando os Recursos de Vídeo

Existem várias maneiras possíveis de exibir vídeo no Xorg e o que funciona é, em grande parte, dependente de hardware. Cada método descrito abaixo terá qualidade variável em diferentes hardwares.

Interfaces de vídeo comuns incluem:

  1. Xorg: saída normal usando memória compartilhada.

  2. XVideo: uma extensão para a interface Xorg que permite que o vídeo seja exibido diretamente em objetos que podem ser desenhados através de uma aceleração especial. Esta extensão oferece reprodução de boa qualidade, mesmo em máquinas de baixo custo. A próxima seção descreve como determinar se esta extensão está sendo executada.

  3. SDL: Simple Directmedia Layer é uma camada de portabilidade para muitos sistemas operacionais, permitindo o desenvolvimento de aplicativos multiplataforma que fazem uso eficiente de som e gráficos. O SDL fornece uma abstração de baixo nível para o hardware, que às vezes pode ser mais eficiente que a interface do Xorg. No FreeBSD, o SDL pode ser instalado usando o pacote ou port devel/sdl20.

  4. DGA: Direct Graphics Access é uma extensão do Xorg que permite que um programa contorne o servidor Xorg e altere diretamente o quadro de buffer. Como ele depende de um mapeamento de memória de baixo nível, os programas que o utilizam devem ser executados como root. A extensão DGA pode ser testada e comparada usando dga(1). Quando o dga está em execução, ele altera as cores do display sempre que uma tecla é pressionada. Para sair, pressione q.

  5. SVGAlib: uma camada gráfica de console de baixo nível.

7.4.1.1. XVideo

Para verificar se esta extensão está em execução, use xvinfo:

% xvinfo

O XVideo é suportado pela placa de vídeo se o resultado for semelhante a:

X-Video Extension version 2.2
  screen #0
  Adaptor #0: "Savage Streams Engine"
    number of ports: 1
    port base: 43
    operations supported: PutImage
    supported visuals:
      depth 16, visualID 0x22
      depth 16, visualID 0x23
    number of attributes: 5
      "XV_COLORKEY" (range 0 to 16777215)
              client settable attribute
              client gettable attribute (current value is 2110)
      "XV_BRIGHTNESS" (range -128 to 127)
              client settable attribute
              client gettable attribute (current value is 0)
      "XV_CONTRAST" (range 0 to 255)
              client settable attribute
              client gettable attribute (current value is 128)
      "XV_SATURATION" (range 0 to 255)
              client settable attribute
              client gettable attribute (current value is 128)
      "XV_HUE" (range -180 to 180)
              client settable attribute
              client gettable attribute (current value is 0)
    maximum XvImage size: 1024 x 1024
    Number of image formats: 7
      id: 0x32595559 (YUY2)
        guid: 59555932-0000-0010-8000-00aa00389b71
        bits per pixel: 16
        number of planes: 1
        type: YUV (packed)
      id: 0x32315659 (YV12)
        guid: 59563132-0000-0010-8000-00aa00389b71
        bits per pixel: 12
        number of planes: 3
        type: YUV (planar)
      id: 0x30323449 (I420)
        guid: 49343230-0000-0010-8000-00aa00389b71
        bits per pixel: 12
        number of planes: 3
        type: YUV (planar)
      id: 0x36315652 (RV16)
        guid: 52563135-0000-0000-0000-000000000000
        bits per pixel: 16
        number of planes: 1
        type: RGB (packed)
        depth: 0
        red, green, blue masks: 0x1f, 0x3e0, 0x7c00
      id: 0x35315652 (RV15)
        guid: 52563136-0000-0000-0000-000000000000
        bits per pixel: 16
        number of planes: 1
        type: RGB (packed)
        depth: 0
        red, green, blue masks: 0x1f, 0x7e0, 0xf800
      id: 0x31313259 (Y211)
        guid: 59323131-0000-0010-8000-00aa00389b71
        bits per pixel: 6
        number of planes: 3
        type: YUV (packed)
      id: 0x0
        guid: 00000000-0000-0000-0000-000000000000
        bits per pixel: 0
        number of planes: 0
        type: RGB (packed)
        depth: 1
        red, green, blue masks: 0x0, 0x0, 0x0

Os formatos listados, como YUV2 e YUV12, não estão presentes em todas as implementações do XVideo e sua ausência pode atrapalhar alguns players.

Se o resultado, ao invés disso, se parecer com:

X-Video Extension version 2.2
screen #0
no adaptors present

O XVideo provavelmente não é compatível com a placa. Isso significa que será mais difícil para o monitor atender às demandas computacionais de renderização de vídeo, dependendo da placa de vídeo e do processador.

7.4.2. Ports e Pacotes Lidando com Vídeo

Esta seção apresenta alguns dos softwares disponíveis na Coleção de Ports do FreeBSD, que podem ser usados ​​para reprodução de vídeo.

7.4.2.1. MPlayer e MEncoder

O MPlayer é um reprodutor de vídeo em linha de comando com uma interface gráfica opcional que visa oferecer velocidade e flexibilidade. Outros front-ends gráficos para o MPlayer estão disponíveis na Coleção de Ports do FreeBSD.

O MPlayer pode ser instalado usando o pacote ou port multimedia/mplayer. Várias opções de compilação estão disponíveis e uma variedade de verificações de hardware ocorre durante o processo de compilação. Por esses motivos, alguns usuários preferem compilar um port ao invés de instalar o pacote.

Ao compilar o port, as opções do menu devem ser revisadas para determinar o tipo de suporte a ser compilado no port. Se uma opção não estiver selecionada, o MPlayer não poderá exibir esse tipo de formato de vídeo. Use as setas e a barra de espaço para selecionar os formatos necessários. Quando terminar, pressione Enter para continuar a compilação e instalação do port.

Por padrão, o pacote ou port construirá o utilitário de linha de comando mplayer e o utilitário gráfico gmplayer. Para codificar vídeos, compile o port multimedia/mencoder. Devido a restrições de licenciamento, um pacote não está disponível para o MEncoder.

A primeira vez que o MPlayer for executado, ele criará um arquivo ~/.mplayer no diretório pessoal do usuário. Esse subdiretório contém versões padrões dos arquivos de configurações específicos do usuário.

Esta seção descreve apenas alguns usos comuns. Consulte o mplayer(1) para uma descrição completa de suas inúmeras opções.

Para reproduzir o arquivo testfile.avi, especifique as interfaces de vídeo com -vo, conforme mostrado nos exemplos a seguir:

% mplayer -vo xv testfile.avi
% mplayer -vo sdl testfile.avi
% mplayer -vo x11 testfile.avi
# mplayer -vo dga testfile.avi
# mplayer -vo 'sdl:dga' testfile.avi

Vale a pena tentar todas essas opções, pois seu relativo desempenho depende de muitos fatores e varia significativamente com o hardware.

Para reproduzir um DVD, substitua testfile.avi por dvd://N -dvd-device DEVICE, em que N é o número do título a ser reproduzido e DEVICE é o nó do dispositivo para o DVD. Por exemplo, para reproduzir o filme 3 de /dev/dvd:

# mplayer -vo xv dvd://3 -dvd-device /dev/dvd

Nota:

O dispositivo padrão de DVD pode ser definido durante a construção do port MPlayer incluindo a opção WITH_DVD_DEVICE=/path/to/desired/device. Por padrão, o dispositivo é /dev/cd0. Mais detalhes podem ser encontrados no Makefile.options do port.

Para parar, pausar, avançar e assim por diante, use uma tecla de atalho. Para ver a lista de atalhos de teclado, execute mplayer -h ou leia o mplayer (1).

Opções de reprodução adicionais incluem -fs -zoom, que ativa o modo de tela cheia e -framedrop, o que ajuda no desempenho.

Cada usuário pode adicionar opções comumente usadas ao seu ~/.mplayer/config assim:

vo=xv
fs=yes
zoom=yes

O mplayer pode ser usado para copiar um filme de DVD para um arquivo .vob. Para gravar o filme em um segundo DVD:

# mplayer -dumpstream -dumpfile out.vob dvd://2 -dvd-device /dev/dvd

O arquivo de saída, out.vob, estará no formato MPEG.

Qualquer pessoa que deseje obter um alto nível de experiência com vídeo UNIX® deve consultar mplayerhq.hu/DOCS. Como é tecnicamente informativa, esta documentação deve ser considerada como leitura obrigatória antes de enviar qualquer relatório de bug.

Antes de usar o mencoder, é interessante familiarizar-se com as opções descritas em mplayerhq.hu/DOCS/HTML/en/mencoder.html. Existem inúmeras maneiras de melhorar a qualidade, diminuir a taxa de bits e alterar os formatos, e algumas dessas opções podem fazer a diferença entre bom ou mau desempenho. Combinações impróprias de opções de linha de comando podem produzir arquivos de saída que não podem ser reproduzidos até mesmo por mplayer.

Aqui está um exemplo de uma cópia simples:

% mencoder input.avi -oac copy -ovc copy -o output.avi

Para copiar para um arquivo, use -dumpfile com o mplayer.

Para converter input.avi para o codec MPEG4 com codificação de áudio MPEG3, primeiro instale o port audio/lame. Devido a restrições de licenciamento, um pacote não está disponível. Uma vez instalado, digite:

% mencoder input.avi -oac mp3lame -lameopts br=192 \
	 -ovc lavc -lavcopts vcodec=mpeg4:vhq -o output.avi

Isso produzirá uma saída reproduzível por aplicativos como mplayer e xine.

input.avi pode ser substituído por dvd://1 -dvd-device /dev/dvd e executado como root para recodificar um filme de DVD diretamente. Como pode levar algumas tentativas para obter o resultado desejado, recomenda-se gravar o arquivo de um filme e trabalhar nele.

7.4.2.2. O Player (reprodutor) de Vídeo xine

O xine é um reprodutor de vídeo com uma biblioteca base reutilizável e um executável modular que pode ser estendido com plug-ins. Pode ser instalado usando o pacote ou port multimedia/xine.

Na prática, o xine requer uma CPU rápida com uma placa de vídeo rápida ou suporte para a extensão XVideo. O player de vídeo xine apresenta melhor desempenho nas interfaces XVideo.

Por padrão, o player xine inicia uma interface gráfica com o usuário. Os menus podem então ser usados ​​para abrir um arquivo específico.

Alternativamente, o xine pode ser executado a partir da linha de comando, especificando o nome do arquivo a ser reproduzido:

% xine -g -p mymovie.avi

Consulte xine-project.org/faq para mais informações e dicas de solução de problemas.

7.4.2.3. As Utilidades do Transcode

O Transcode fornece um conjunto de ferramentas para recodificar arquivos de vídeo e áudio. O Transcode pode ser usado para mesclar arquivos de vídeo ou reparar arquivos quebrados usando ferramentas de linha de comando com interfaces de fluxo stdin/stdout.

No FreeBSD, o Transcode pode ser instalado usando o pacote ou port multimedia/transcode. Muitos usuários preferem compilar o port, pois fornece um menu de opções de compilação para especificar o suporte e os codecs a serem compilados. Se uma opção não for selecionada, o Transcode não poderá codificar esse formato. Use as setas e a barra de espaço para selecionar os formatos necessários. Quando terminar, pressione Enter para continuar a compilação e instalação do port.

Este exemplo demonstra como converter um arquivo DivX em um arquivo PAL MPEG-1 (PAL VCD):

% transcode -i input.avi -V --export_prof vcd-pal -o output_vcd
% mplex -f 1 -o output_vcd.mpg output_vcd.m1v output_vcd.mpa

O arquivo MPEG resultante, output_vcd.mpg, está pronto para ser executado com o MPlayer. O arquivo pode ser gravado em uma mídia (CD), para criar um CD de vídeo usando um utilitário como multimedia/vcdimager ou sysutils/cdrdao.

Além da página de manual do transcode, consulte transcoding.org/cgi-bin/transcode para mais informações e exemplos.

All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/

Questions that are not answered by the documentation may be sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.