Nós reproduzimos vídeos em Web sites por entretenimento e para ver as últimas notícias. Nós colocamos vídeos em Webinars, tutoriais baseados na Web, propagandas e sínteses executivas para aprimorar as palavras escritas. Nós fazemos upload de vídeos para servidores para que os usuários possam fazer download para seus computadores. Todos os filmes consomem transferência de dados. Quanto maior o tamanho do arquivo, maior a quantidade de transferência de dados consumida.
Recentemente, minha condição de usuária de vídeo passou para a de desenvolvedora, quando me passaram um projeto de reprodutor de vídeo para converter arquivos de DVD da cerimônia de entrega de um prêmio para uma apresentação da Web remota. O tempo de reprodução é longo — uma hora. O tamanho do arquivo é enorme — pouco menos de 1 GB.
Primeiro eu converti os arquivos de vídeo e usei um programa de FTP para carregá-los no meu site remoto, em seguida fiz download deles para um reprodutor de vídeo no meu computador. A repetição do processo de transferência de arquivos resultou em uma conta salgada do meu provedor de serviço wireless. Eu excedi o limite mensal do provedor para a quantidade de dados que podem ser transferidos do meu computador para um servidor remoto e de volta. Durante o upload, a diminuição contínua na velocidade de um vídeo de duração longa foi significativa.
Para reduzir o tamanho do arquivo e a velocidade de transferência de dados, fui até meu computador de backup para procurar por utilitários de software livre, e achei WinFF para converter arquivos. Era gratuito e estava disponível para diferentes plataformas — Windows e Linux®.
Antes de poder fazer downloads, eu esperei até o primeiro dia do mês seguinte, quando o provedor do serviço de placa wireless iria reconfigurar o contador de transferência de dados para zero no meu computador primário. Para o download do WinFF, eu pude escolher entre Windows, distribuições baseadas em Red Hat, instruções de instalação para repositórios do Ubuntu ou repositórios do Debian. Eu alterei para Ubuntu e clique em Applications > Accessories > Terminal. Colei o código após o prompt de instruções para instalação. Isso é mostrado na Listagem 1.
Listagem 1. Instrução do Ubuntu em exemplo de instalação
sudo apt-get update && sudo apt-get install winff |
Forneci minha senha, já que estava realizando uma função administrativa, e foi feito automaticamente o download e a instalação do software. Quando o script concluir sua execução, insira WinFF após o prompt e feche o terminal. Agora acesse o WinFF em Sound and Video em Applications.
WinFF é um front-end de GUI para o conversor de linha de comando FFmpeg. WinFF permite escolher, na sua lista suspensa, um nome de usuário fácil de um formato de arquivo a ser convertido. WinFF faz a interface com o FFmpeg e permite ver o código de linha de comando deste. Os valores de alguns parâmetros podem ser alterados na janela principal do WinFF. Após ler a documentação online do FFmpeg (consulte Recursos ), pode ser conveniente alterar os valores e sintaxe dos parâmetros na linha de comando. WinFF não é o único aplicativo que faz interface com o FFmpeg. Você mesmo pode desenvolver aplicativos que fazem interface com o FFmpeg.
A linha de comando do FFmpeg depende de duas bibliotecas
—
libavformat e libavcodec
— para fornecer suporte para vários codecs e formatos de arquivo.
Essas bibliotecas estão disponíveis na origem do FFmpeg. Não é necessária biblioteca externa para os formatos de arquivo abordados nos quatro exemplos de conversão abaixo.
Como mostra a Figura 1, a janela principal do WinFF contém cinco partes: a lista de arquivos (espaço em branco), botões, o menu, o bloco Output Details e o bloco Additional Options.
Para adicionar um arquivo de audio/video (A/V) à lista, clique em Add. Se você fizer uma escolha errada, use Remove ou Delete para remover. Para esvaziar a lista, use Clear. Para reproduzir o arquivo sem converter, clique em Play. Convert executa o FFmpeg nos arquivos em uma janela de shell/comando.
Figura 1. Janela principal do WinFF
O bloco Output Details permite escolher Device Preset para conversão. Se desejar alterar as pré-configurações, acesse o menu Edit e abra o Preset Editor para fazer adições ou atualizações. Se você já tiver saldo uma pré-configuração em uma extensão de arquivo .wff, acesse o menu File para importar. O menu Options permite exibir o script que será executado em vez de converter, pausar o script no final da conversão e desativar o cálculo ao concluir a conversão.
Exemplo de conversão nº 1: Flash
Escolha o arquivo de vídeo que deseja converter para Flash. Clique em Add para adicionar o arquivo na lista. Em seguida, acesse o bloco Output Details e clique na primeira seta suspensa para escolher Websites na lista de categorias. A Figura 2 mostra isso.
Figura 2. Lista suspensa de categorias
Na caixa Device Preset, eu escolho Flash Video (FLV) for Web use Fullscreen, como mostra a Figura 3. Você especifica onde colocar os arquivos de vídeo convertidos como a saída.
Figura 3. Lista suspensa de pré-configurações de dispositivo
WinFF ajuda a gerar a linha de comando correta do FFmpeg, o que pode ser complexo com tantas opções. Entretanto, pode ser útil capturar a sintaxe total do FFmpeg para uso em scripts ou outras funções em lote. Duas etapas são necessárias para ver o código da linha de comando. Primeiro, clique em Opções e verifique se a linha CMD está marcada. Em seguida, escolha Edit > Presets para abrir o editor, como mostra a Figura 4.
Figura 4. Editar pré-configurações para arquivo Flash
O editor mostra uma lista de pré-configurações na caixa do canto superior esquerdo. Para escolher, clique em Website e, em seguida, no rótulo da pré-configuração na caixa superior direita para preencher as caixas remanescentes. É possível adicionar ou atualizar as pré-configurações. Será solicitado a você que confirme a adição ou atualização. Após adicionar ou importar uma pré-configuração, ela estará disponível na janela principal, mas não é salva em disco até que você clique em Save. Ao importar, WinFF irá perguntar se deseja substituir uma pré-configuração existente. É possível exportar uma pré-configuração para a biblioteca no seu disco.
Nome, rótulo e extensão do arquivo da pré-configuração
Por padrão, o nome da pré-configuração de Web site é FLVwebFS. É permitida apenas uma palavra. Escolhi Flash Video (FLV) for Web use Fullscreen como rótulo da pré-configuração. É possível alterar o nome e rótulo da pré-configuração e salvá-la, se desejar. O nome da nova pré-configuração não deve ser o mesmo que o de uma pré-configuração existente, caso contrário a pré-configuração existente pode ser acidentalmente substituída pela nova. A extensão Output File especifica a extensão de arquivo dos arquivos de saída. Para alterar a categoria, insira um novo nome.
Linha de comando da pré-configuração
Agora chegamos à parte mais interessante — a Linha de Comando da Pré-configuração, que mostra os parâmetros do FFmpeg para a pré-configuração. Use a linha de comando da pré-configuração atual para aprender os fundamentos do FFmpeg para um arquivo A/V particular, e aproveitá-la para melhorar a qualidade do arquivo. Também é possível usar a linha de comando para localizar o tamanho de um formato de arquivo em particular. Faça isso para formatos de arquivo diferentes e compare os tamanhos de cada para apresentação na Web. Não é necessário inserir os nomes dos arquivos de entrada e saída, pois o WinFF cuida deles automaticamente, obtendo as informações da lista de arquivos de entrada e Output Details na janela principal.
A Listagem 2 mostra a primeira parte do código de Linha de Comando da Pré-Configuração da pré-configuração FLVwebFS.
Listagem 2. primeira parte da linha de comando da pré-configuração para Flash
-vcodec FLV -f FLV -r 29.97 -s 320x240 -aspect 4:3 -b 300kb -g 160 -cmp dct -subcmp dct
|
A Listagem 3 mostra a segunda parte do mesmo código para a pré-configuração FLVwebFS.
Listagem 3. Segunda parte do código para Flash
-mbd 2 -flags +aic+cbp+mv0+mv4 -trellis 1 -ac 1 -ar 22050 -ab 56kb
|
O significado da maioria dos parâmetros em ambas as listagens é explicado na Tabela 1. Valores padrão são incluídos para alguns parâmetros. FFmpeg força a extensão FLV como formato de arquivo, configura a taxa de quadros para 29,97 quadros por segundo (frames per second, fps), substituindo o padrão de 25, e configura um tamanho de quadro de 320x240 para uma tela VGA. Se você quiser usar o Web site em uma tela widescreen, pode alterar -aspect 4:3 para -aspect 16:9. A taxa de bits do vídeo é configurada em 300 Kbs, mais rápido que o valor padrão de 200 Kbs. A qualidade do áudio, no entanto, parece ser menor que o valor padrão.
Há três parâmetros ausentes na linha de comando. Os dois primeiros são a opção -i em frente da linha de comando, e o nome do arquivo de saída no final da linha de comando. O terceiro parâmetro ausente é a opção de buffer, que pode ser necessária se você estiver tendo problemas de buffer. A opção de buffer é -bufsize para configurar o tamanho do buffer em bits. Isso seria necessário se você configurasse a taxa de bits máxima (taxa de bits -maxrate).
Parâmetros importantes são resumidos na Tabela 1 para consulta rápida.
Tabela 1. Parâmetros para arquivo Flash
| Parâmetros | Descrição | Vídeo Flash | Padrão |
|---|---|---|---|
| -ab | Configura a taxa de bits de áudio | 56 KB | 64 KB |
| -ac | Configura canais de áudio | 1 | 1 |
| -ar | Configura a frequência de amostra de áudio | 22050 Hz | 44100 Hz |
| -aspect | Configura a proporção de aspecto da tela | 4:3 | |
| -b | Configura a taxa de bits de vídeo | 300 Kbs | 200 Kbs |
| -bufsize | Configura o tamanho do buffer em bits | ||
| -f | Força a extensão do arquivo de acordo com o formato de arquivo | FLV | |
| -g | Configura grupo de tamanhos de figura | 160 | |
| -maxrate bitrate | Configura a taxa de bits máxima de vídeo | ||
| -r | Configura a taxa de quadros por segundo | 29,97 | 25 |
| -s | Configura o tamanho do quadro | 320x240 (VGA) | |
| -vcodec | Força o codec de vídeo para um formato de arquivo (FLV, por exemplo) | FLV |
Saia do editor e use Convert para abrir a janela de shell/comando para acompanhar o processo de conversão do arquivo, com tamanho original de 728 MB. FFmpeg mostra quantos segundos decorreram antes de concluir sua execução no arquivo atual. Se o script estiver sendo executado um pouco rápido demais, é possível pausá-lo clicando em Pause (geralmente no canto superior direito do teclado) para examinar melhor os resultados. Se seu computador tiver processadores duplos, acesse Edit > Preferences e desmarque Multithreading for Dual Processors.
O tamanho do arquivo original que usei como entrada para conversão era de 723 MB. O formato de arquivo é MPEG-4. Quando converti o arquivo para a extensão FLV, o tamanho resultante diminuiu drasticamente para 1,28 MB.
Exemplo de conversão nº 2: Windows Media Player
Como mostra a Figura 5, escolha WMV como formato de conversão e WMV for Web Use como Pré-Configuração do Dispositivo.
Figura 5. Detalhes da saída para Windows Media Player para uso na Web
Em seguida, acesse Edit Presets para localizar a Preset Command Line (Linha de Comando da Pré-Configuração).
A Listagem 4 mostra a Linha de Comando da Pré-configuração para a pré-configuração WMV2broadband.
Listagem 4. Linha de comando da pré-configuração de Windows Media Player
-vcodec WMV2 -acodec wmav2 -b 640kb -ab 128kb -r 29.97 -s 320x240
|
As taxas de bits de áudio e vídeo são maiores que aquelas do FLV. A taxa e tamanho do quadro são o mesmo que os da extensão de arquivo FLV. Ele usa o valor de 1 como padrão para os canais de áudio e o valor de 44100 Hz como frequência de amostra de áudio padrão.
O valor da taxa de bits de áudio é 128 KB, o dobro do valor padrão de 64 KB. A proporção de aspecto não foi incluída, pois ela já é determinada previamente pelo Windows Media Player. O tamanho do arquivo resultante é 345 MB, muito maior que o tamanho do arquivo Flash, de 1.28 MB.
Antes de alterar parâmetros para reduzir ainda mais o tamanho do arquivo Windows Media Player, você deve exportar o arquivo e salvá-lo. Em vez de correr o risco de inserir os parâmetros errados na linha de comando do FFmpeg, use a janela principal do WinFF para configurar as opções de áudio e vídeo em caixas.
A Figura 6 mostra as entradas de configuração de vídeo para taxa de bits de vídeo, taxa de quadros, tamanho de vídeo e proporção de aspecto. Marque 2 pass para fazer duas passagens do FFmpeg no vídeo, para obter maior qualidade. Marque Deinterlace para remover o entrelaçamento do vídeo.
Figura 6. Configurações de vídeo
A Figura 7 mostra as entradas de configuração de áudio para taxa de bits de áudio, taxa de amostra e canais de áudio.
Figura 7. Configurações de áudio
Exemplo de conversão nº 3: QuickTime
Vamos examinar o QuickTime, como mostra a Figura 8.
Figura 8. Pré-configuração de QuickTime
A Figura 8 mostra que quatro rótulos de pré-configuração estão disponíveis para arquivos QuickTime. São eles mov e H.264 (alto, muito alto e superalto). Escolhi mov para fins de demonstração.
A Listagem 5 mostra o código de comando da pré-configuração qmov.
Listagem 5. Linha de comando de pré-configuração para QuickTime
-f mov -acodec libfaac -b 1250kb -r 25 -ab 128kb -s 640x480 -ac 2 -ar 48000
|
A taxa de bits de vídeo do arquivo QuickTime é maior que a do arquivo Windows Media Player. Embora a taxa de quadros seja um pouco menor que a do Windows Media Player, o tamanho do quadro é maior — o dobro do tamanho dos arquivos Flash e Windows Media Player. O número de canais de áudio é dois, maior que o dos arquivos FLV e WMV. A frequência de amostra do QuickTime é maior que o valor padrão de 44100 Hz e menor que o do arquivo Flash. O tamanho do arquivo resultante é de 598 MB, em comparação com 345 MB do arquivo Windows Media Player e 1,2 MB do Flash.
A Tabela 2 expande a Tabela 1, incluindo a coluna sobre parâmetros Windows Media Player e QuickTime para comparação com os do Flash.
Tabela 2. Comparando três arquivos de vídeo
| Parâmetros | Descrição | Vídeo Flash | Windows Media Player | QuickTime | Padrão |
|---|---|---|---|---|---|
| -ab | Configura a taxa de bits de áudio | 56 KB | 128 KB | 125 KB | 64 KB |
| -ac | Configura canais de áudio | 1 | 2 | 1 | |
| -ar | Configura a frequência de amostra de áudio | 22050 Hz | 44800 Hz | 44100 Hz | |
| -aspect | Configura a proporção de aspecto da tela | 4:3 | |||
| -b | Configura a taxa de bits de vídeo | 300 Kbs | 640 Kbs | 1250 Kbs | 200 Kbs |
| -bufsize | Configura o tamanho do buffer em bits | ||||
| -f | Força a extensão do arquivo de acordo com o formato de arquivo | FLV | mov | ||
| -g | Configura grupo de tamanhos de figura | 160 | |||
| -maxrate bitrate | Configura a taxa de bits máxima de vídeo | ||||
| -r | Configura a taxa de quadros por segundo | 29,97 | 29,97 | 25 | 25 |
| -s | Configura o tamanho do quadro | 320x240 (VGA) | 320x240 (VGA) | 640x480 | |
| -acodec | Força o codec de áudio para um formato de arquivo | wmav2 | libfaac | ||
| -vcodec | Força o codec de vídeo para um formato de arquivo | FLV | WMV2 | FLV |
Contribuindo para o tamanho do arquivo, em ordem de importância, estão os parâmetros que configuram a taxa de bits de vídeo, frequência de amostra do áudio, taxa de bits do áudio e tamanho do quadro. A frequência de amostra de áudio e taxa de bits de áudio do Flash são menores que o valor padrão de 44100 Hz, enquanto os do Windows Media Player e QuickTime são maiores que o valor padrão. Isso significa que a qualidade de áudio de arquivos Flash não é tão boa quanto à qualidade dos outros dois arquivos.
Para melhorar a qualidade do áudio nos arquivos Flash, altere os valores de frequência de amostra de áudio e taxas de bit de áudio para um valor igual ou maior que o padrão. Isso pode aumentar o tamanho de um arquivo Flash, mas não irá atingir os tamanhos do Windows Media Player e QuickTime.
Exemplo de conversão nº 4: BlackBerry
Vamos supor que você queria fazer uma versão para telefone celular do seu Web site de desktop. O tempo de reprodução é curto. É outra maneira de evitar excesso de transferência de dados.
Use a tela Edit Presets para localizar o formato de vídeo para um Web site para telefone celular. Eu escolhi a pré-configuração BlackBerry e BlackBerry Curve Fullscreen nas listas de rótulos. A extensão do arquivo de saída é MP4.
A Listagem 6 mostra a linha de comando de pré-configuração de BlackBerry Curve.
Listagem 6. Linha de comando de pré-configuração de BlackBerry Curve
-vcodec mpeg4 -s 320x240 -qscale 10 -b 250 -ab 48k -ar 22050 -ac 2 -acodec aac
|
Além de MP4, BlackBerry Curve suporta uma ampla gama de formatos de vídeo, incluindo áudio 3PG, MP3, AAC, WAV, WMA, bem como MPEG4, H.263 e WMV. Se você deseja usar formato de arquivo 3PG como extensão do arquivo de saída, precisa alterar a extensão do arquivo para esse formato.
À medida que cresce a demanda por vídeo, é necessário se tornar flexível na maneira como se oferece vídeo. Este artigo ajuda a converter vídeo facilmente em diferentes formatos, para ajudar a se adequar ao estilo certo para o uso certo. Você irá economizar largura da banda preciosa para você e seus usuários, e irá garantir a melhor qualidade para o usuário final. Também poderá experimentar com diferentes opções e capturar essas receitas para processamento automático de arquivos.
Aprender
-
Saiba mais sobre WinFF.
-
Saiba mais sobre as opções de áudio e vídeo do FFmpeg, e obtenha uma lista de formatos de arquivo e codecs suportados para seus projetos de A/V.
-
Leia The Complete Book of Middleware, de Judith Myerson, que foca nos princípios e prioridades essenciais do design de sistema e enfatiza os novos requisitos causados pelo aumento do e-commerce e de sistemas integrados distribuídos.
-
Adquira o insight de negócios e o know-how técnico para assegurar integração bem sucedida de sistemas lendo
Enterprise Systems Integration, Second Edition.
-
Leve sua organização para o futuro com
RFID in the Supply Chain, que explica processos de negócios, problemas operacionais e de implementação, riscos, vulnerabilidades e segurança e privacidade.
-
Para ouvir entrevistas e discussões interessantes para desenvolvedores de software, confira os Podcasts do developerWorks
.
-
Fique por dentro dosEventos técnicos e webcasts do developerWorks.
-
Siga o developerWorks no Twitter.
-
Confira conferências, feiras, webcasts e outros eventos que estão para acontecer no mundo todo e que são do interesse de desenvolvedores de software livre da IBM.
-
Visite a Zona de software livre para obter informações detalhadas sobre instruções, ferramentas e atualizações de projetos para ajudar você a se desenvolver com tecnologias de software livre e usá-las com produtos da IBM, bem como nossos artigos e tutoriais mais populares.
-
O
My developerWorks é um exemplo de uma comunidade geral bem-sucedida que abrange uma ampla variedade de tópicos.
-
Assista e aprenda sobre a IBM e tecnologias de software livre e funções de produto com as demos gratuitas on demand do developerWorks.
Obter produtos e tecnologias
-
Inove seu próximo projeto de desenvolvimento de software livre com a versão de teste do software da IBM, disponível para download ou em DVD.
- Faça o download das versões de avaliação de produto IBM
ou explore as versões de teste on-line no IBM SOA Sandbox e entre em contato com as ferramentas de desenvolvimento de aplicativos e produtos de middleware do DB2 ®, Lotus®, Rational®, Tivoli®e WebSphere®.
Discutir
-
Participe dos Blogs do developerWorks e participe da comunidade do developerWorks.
Judith M. Myerson é arquiteta e engenheira de sistemas, e também escritora freelance. Suas áreas de interesse incluem tecnologias de middleware, sistemas corporativos, tecnologias de bancos de dados, desenvolvimento de aplicativos, gerenciamento de rede, sistemas distribuídos, tecnologias baseadas em componente e gerenciamento de projeto. É possível entrar em contato com ela no endereço jmyerson@bellatlantic.net.