Aula2: Utilizando O Canivete Suíço Mencoder Capacitação 2010
Total Page:16
File Type:pdf, Size:1020Kb
Capacitação realizada através de parceria entre o Núcleo de Tecnologia Educacional Municipal - NTM Núcleo de Tecnologia Educacional Estadual - NTE de Volta Redonda CapacitaçãoCapacitação 20102010 Aula2:Aula2: UtilizandoUtilizando oo CaniveteCanivete SuíçoSuíço MencoderMencoder O MEncoder é uma ferramenta em linha de comando para encodação de vídeos sob a Licença Pública Geral (GPL). O MEncoder é distribuído juntamente com o MPlayer e permite converter todos os formatos de vídeo aceitos pelo MPlayer para um grande número de outros players. Possui diversos filtros de áudio e vídeo para a manipulação dos arquivos. Devido a enorme quantidade de opções, o MEncoder pode parecer pouco amigável no começo, mas ele é uma ferramenta extremamente poderosa para conversão de vídeo. Alguns frontends foram desenvolvidos para torná- lo mais acessível. O Básico Um mal entendido muito comum é o de que o MPlayer, por ser capaz de reproduzir diversos containers e codecs de áudio e vídeo, seria também capaz de codificar arquivos nestes mesmos formatos. A lista de codecs para codificação de mídia é muito longa, mas alguns de código livre não estão inclusos por exemplo: FLAC e Theora. Mas não é algo com o que se preocupar, ainda restam diversas opções, até mesmo se você deseja codificar um arquivo para reprodução em Windows ou Mac. Antes de entrar em detalhes, vamos observar o funcionamento básico num processo de re-codificação de um arquivo em um formato que o MPlayer não pode reproduzir, para o formato MPEG4: mencoder arquivo.flv -o arquivo.avi -ovc lavc -oac pcm Explicando cada opção -arquivo.flv: nome do arquivo de vídeo original que você deseja recodificar. Por exemplo arquivos realplayer, windows, mpeg, avi, divx, xvid, theora, matroska e etc. -o arquivo.avi: O nome do arquivo de saída, o qual será dado ao arquivo após a recodificação, no caso, arquivo.avi; -ovc <codec_de_video>: OVC significa "Output video codec". Biblioteca que você deseja utilizar para a codificação do vídeo; -oac <audio_codec> OAC significa "Output audio codec" Biblioteca que você deseja utilizar para a codificação do áudio. Concluindo Acredite ou não, isto é tudo o que você precisa saber para recodificar arquivos. O exemplo acima irá codificar o vídeo para DivX (mpeg4) e a trilha de áudio para pcm (WAV). Se você deseja verificar como um determinado arquivo foi codificado, execute o comando file arquivo.avi no arquivo gerado para obter uma saída resumida. Caso você tenha o programa transcode instalado você poderia usar o comando tcprobe -i arquivo.avi . Codecs e Formatos Eliminando possíveis confusões, codecs e formatos não são a mesma coisa. MPEG-4 é um formato de vídeo. Você pode criar arquivos de vídeo MPEG-4 com alguns codecs opcionais. DivX, XviD e lavc são codecs que criam os vídeos realmente para você. MPEG-2 é um outro formato de vídeo. Vídeos DVDs são armazenados neste formato. É por isto que você pode ripar um DVD com qualidade similar e tamanho reduzido em formato MPEG-4. Antes de você começar a codificar os seus arquivos, é uma boa ideia decidir o formato que você deseja. MPEG-4 será utilizado como padrão aqui, pois resulta em arquivos altamente comprimidos e com qualidade muito boa. Containers Multimídia Um container multimídia é onde você coloca seu áudio e vídeo codificados. Alguns exemplos de containers multimídia são: AVI, ASF, OGG, Matroska e MOV. Eles são chamados de containers porque você pode colocar (na teoria) qualquer coisa dentro deles. Por exemplo, o fato de um arquivo ter uma extensão .avi não significa que ele é um MPEG4. Pode ser qualquer tipo de arquivo que o container AVI tenha suporte para áudio e vídeo. É por isso que você pode codificar filmes com tantos codecs e ainda colocá-los no mesmo container. Vamos dar uma rápida olhada em alguns containers multimídia. Novamente, embora o MPlayer seja capaz de reproduzir uma diversidade destes, ele não é capaz de codificar todos eles. De qualquer forma, dispondo do MEncoder, isto não se torna uma limitação. AVI O AVI (Audio Video Interleave) foi criado pela Microsoft, apesar de não ser aberto e bem suportado. O MPlayer e o MEncoder, podem reproduzi-lo e codificá-lo. O AVI é muito comum, e por isso você verá em diversos dos nossos exemplos. Matroska É um container multimídia de código aberto, similar ao AVI, exceto pelo fato de que ele possui opções e configurações muito mais avançadas que podem ser inclusas no meta-dado. O MPlayer e o MEncoder também são capazes de reproduzi-lo, porém não é capaz de codificá-lo. Os arquivos de áudio e vídeo matroska possuem as extensões .mka e .mkv, respectivamente. ASF O ASF (Advanced Streaming Format) é mais um container multimídia, desenvolvido pela Microsoft, mais utilizado para streaming (reprodução on- line) multimídia. Tecnicamente, tudo que pode ser colocado dentro de um container AVI também pode ser colocado em um container ASF, mas de maneira geral, são utilizados os codecs Windows Média Vídeo (WMV) e Windows Média Áudio (WMA) . OGG O container OGG é também um container multimídia de código livre, parte do projeto Xiph. OGM é uma extensão do OGG para suportar alguns codecs de vídeo proprietários. Assim como o Matroska, o MPlayer é capaz de reproduzir, mas não de criar vídeos OGG e OGM. Links para aprofundamento Formatos suportados pelo Mplayer: http://www.mplayerhq.hu/DOCS/HTML/en/video-formats.html Limitações do container AVI: http://www.mplayerhq.hu/DOCS/HTML/en/menc-feat-dvd-mpeg4.html#menc-feat-dvd-mpeg4-muxing-avi-limitations Comparação entre diversos containers: http://en.wikipedia.org/wiki/Comparison_of_container_formats Codecs de Vídeo Disponíveis A primeira coisa a fazer é verificar quais codecs podemos utilizar para codificação. O seguinte comando lhe dará uma lista de opções: mencoder -ovc help "ovc" significa output video codec A saída deste comando depende de como você tenha compilado o MPlayer. Já que há vários à disposição. Nós iremos analisar brevemente alguns deles. Se você não sabe qual utilizar, utilize -ovc lavc com as opções padrão. mencoder -ovc help copy - frame copy, without re-encoding. Doesn't work with filters. frameno - special audio-only file for 3-pass encoding, see DOCS. raw - uncompressed video. Use fourcc option to set format explicitly. nuv - nuppel video lavc - libavcodec codecs - best quality! vfw - VfW DLLs, read DOCS/HTML/en/encoding-guide.html. qtvideo - QuickTime DLLs, currently only SVQ1/3 are supported. libdv - DV encoding with libdv v0.9.5 xvid - XviD encoding x264 - H.264 encoding lavc O lavc/libavcodec é parte do projeto da biblioteca FFMPEG. De acordo com a página oficial do FFMPEG: "A libavcodec é uma biblioteca que contém todos os codificadores e decodificadores FFMPEG de áudio e vídeo. A maior parte dos codecs foram desenvolvidos do zero para garantir a melhor performance e capacidade de reutilização do código." O uso da lavc como seu codec de vídeo, lhe fornece diversas opções, incluindo uma porção de formatos para codificação. Segue um exemplo que cria um container AVI DivX usando a biblioteca lavc para codificar o vídeo em MPEG4 e o áudio em PCM. lavc mencoder arquivo.flv -ovc lavc -oac pcm -ffourcc DX50 -o arquivo.avi Se você não deseja alterar muito as configurações de vídeo, este exemplo acima será o bastante para a maioria dos players disponíveis. A opção -ffourcc DX50 está inclusa porque embora o vídeo produzido seja MPEG4, o cabeçalho padrão é FMP4 o qual não é largamente reconhecido. Um cabeçalho com DX50 diz que o vídeo produzido é compatível com DivX 5 (MPEG4) e deve estar apto a ser reproduzido em qualquer player que seja capaz de reproduzir vídeo MPEG4. O Pulo do Gato Se você não tem a menor ideia do que deve escolher e não tem tempo para ficar testando configurações, faça a opção pelo MPEG4. Como o MPEG4 é a opção padrão, você não precisará adicionar nenhuma opção especial. Apenas use a linha abaixo: mencoder arquivo.flv -o arquivo.avi -ovc lavc -oac pcm Xvid Com o XviD podemos criar vídeos MPEG4 com altíssima qualidade. "O XviD é um software livre para codificação de vídeos em MPEG4 que possui algumas características que o faz muito melhor do que o codec DivX. Ele produz vídeos com qualidade muito boa e com ótima performance devido as otimizações para a maioria dos processadores modernos." Conforme o documento de dúvidas freqüentes (FAQ) do XviD, "O DivX é um software proprietário, com um ciclo de desenvolvimento que segue apenas uma lógica comercial. O XviD é um software livre (licenciado sob a GNU GPL), aberto a contribuições externas e que objetiva a qualidade superior, obediência aos padrões, velocidade de processamento, portabilidade e a interoperabilidade." Codificação com o XviD A utilização da opção bitrate realizará a codificação em uma taxa de bits constante. bitrate=valor Os valores podem ser higher, que implica em uma melhor qualidade e arquivos maiores e lower, que implica em uma menor qualidade e arquivos menores. Com algumas otimizações você pode obter uma qualidade próxima a dos DVDs (bitrate por volta de 800), VCDs (bitrate entre 400 e 500) e também uma qualidade para Streaming (bitrate em torno de 80 à 150). Para obter uma boa qualidade num filme de tamanho 720x480 você precisaria de aproximadamente 800kb/s. O bitrate padrão do Mencoder é de 687 kbits/s, mas você pode ter que especificar o valor dependendo da sua versão. mencoder -ovc xvid -oac mp3lame -xvidencopts bitrate=800 -o arquivodesaida.avi arquivo.flv Codecs de Áudio Disponíveis A primeira coisa a fazer é verificar quais codecs podemos utilizar para codificação. O seguinte comando lhe dará uma lista de opções: mencoder -oac help "oac" significa output audio codec copy - frame copy, without re-encoding (useful for AC3) pcm - uncompressed PCM audio mp3lame - cbr/abr/vbr MP3 using libmp3lame lavc - FFmpeg audio encoder (MP2, AC3, ...) twolame - Twolame MP2 audio encoder faac - FAAC AAC audio encoder copy Cópia de quadro, sem recodificação (útil para AC3).