Se você tivesse que adicionar suporte para um formato de arquivo de vídeo e codec, qual você escolheria?

StackOverflow https://stackoverflow.com/questions/305773

Pergunta

Estou procurando adicionar suporte para leitura e gravação de arquivos de vídeo no meu aplicativo. Se você tivesse que escolher exatamente um formato de arquivo e uma combinação de codec que satisfaria a maioria dos usuários, o que você escolheria:

1) MPEG-4/H.264 (.MP4) 2) AVI/DIVX (.AVI) 3) OGG/Theora (.ogg) 4) Windows Media Video (.wmv)

Estou inclinado para o MPEG-4/H.264, uma vez que ele é suportado no Linux, Mac OS X, The Flash Player, iPods, PlayStation 3, Xbox360 e Suporte estão no Microsoft Silverlight e Windows Media Player 12.

Estou perdendo alguma coisa? Há algo melhor que eu poderia estar escolhendo?

Foi útil?

Solução

Depende do que seu aplicativo está fazendo. Se você deseja processar vídeos gravados em uma placa de captura de vídeo, provavelmente precisará ler arquivos .mpg com MPEG2 incorporado. Um grande número de vídeos usa o contêiner .avi ou .wmv. A Microsoft está pressionando .wmv, mas .avi tem um suporte muito melhor entre as ferramentas gratuitas. Não há muitas ferramentas suportam contêineres .mp4 no Windows (o Mac provavelmente é diferente). H.264, MPEG2 e MPEG4 são meus codecs favoritos. O H.264 é de ótima qualidade/taxa de bits, mas torna preciso e rápido busca duro e é extremamente intensivo em CPU. O MPEG4 é quase tão bom quanto o H.264 em termos de taxa de qualidade/bits, mas é muito menos intensivo em CPU. O MPEG2 requer muito mais bits para alcançar a mesma qualidade, mas é suportado em praticamente todos os lugares e é realmente fácil de decodificar e procurar nesses arquivos.

Se você não se importa de usar o código LGPL, sugiro olhar ffmpegé libavcodec e libavformat. Isso permitirá que você faça tudo o que mencionar em todas as plataformas (embora eu não tenha certeza sobre o OGG & Theora-não as usei).

Outras dicas

Eu acho que sua primeira opção seria minha escolha. Eu acho que a maioria dos aplicativos pode ler este formato e é menos flexível.

Se eu estiver correto, os arquivos AVI/DIVX podem realmente conter diferentes tipos de mídia, o mesmo vale para o WMV. Isso torna mais difícil usar esses formatos, porque você precisa suportar todas as codificações.

Primeiro de tudo, você também terá som em seus vídeos? Se sim, eu iria com MP3.

Agora, considerando o codec de vídeo e o contêiner de vídeo. Eu acho que você não deve considerar as opções 3 e 4 por vários motivos. Theora é realmente impopular (ainda não encontrei um vídeo da Theora) e o WMV é uma tecnologia da Microsoft, para que suas opções sejam um pouco limitadas.

Agora, sobre os dois primeiros: eu iria com o vídeo Divx (MPEG4 Parte 2) em um contêiner AVI. É realmente popular, pois a maioria dos computadores e muitos DVDs conseguem reproduzir esses vídeos. Além disso, existe um ótimo codec divx de código aberto, xvid. Finalmente, o DivX precisa de muito menos recursos que o H.264 para codificar e decodificar. O último é importante, pois, dependendo dos parâmetros de codificação, a codificação em tempo real H.264 pode nem ser suportada.

A falta de suporte ao AVI/DIVX em várias plataformas não é um problema, pois é realmente fácil de transcodificar com qualquer formato usando ferramentas de código aberto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top