Quais são as diferenças entre os perfis H.264?

56

Eu estava renderizando um vídeo no After Effects CS5 e quando estava formatando, escolhi o codec H.264 e, nesse formato, ele tinha um perfil com Baseline, Main e High.

Então fiz um pequeno teste - renderizando os dois arquivos com Baseline e High. A única coisa que notei foi que o tamanho do vídeo era menor, alto fornecendo o tamanho menor do arquivo.

Eu só queria saber qual é a diferença, qual seria a melhor para a qualidade e a melhor para o tamanho do arquivo.

James
fonte

Respostas:

78

O que é um perfil?

Um perfil H.264 define mais ou menos quais "campainhas e assobios" o codificador pode usar ao compactar seu vídeo - e há muitos recursos H.264 que o codificador pode ativar. Quais é permitido ativar é definido pelo perfil. Os perfis garantem a compatibilidade entre dispositivos que possuem diferentes recursos de decodificação. Com os perfis, o codificador e o decodificador concordam com um conjunto de recursos com os quais ambos podem lidar.

O que os diferentes perfis fazem?

Para uma lista detalhada, consulte Perfis H.264 na Wikipedia.

Geralmente, o perfil da linha de base restringe o codificador apenas a certos recursos básicos. Os vídeos codificados com o perfil da linha de base podem ser facilmente reproduzidos, mesmo em dispositivos com menor poder computacional, como smartphones mais antigos. Os telefones Android e iOS, por exemplo, reproduzem oficialmente apenas vídeo codificado com o perfil de linha de base, mas não Alto ou Principal . Isso mudou um pouco nos últimos anos, onde mais e mais telefones podem realmente reproduzir vídeo principal ou de alto perfil, mas ainda assim as recomendações oficiais não mencionam isso .

Principalmente para aplicativos de baixo custo, esse perfil é normalmente usado em videoconferência e aplicativos móveis. Corresponde ao subconjunto de recursos que são comuns entre os perfis de linha de base, principal e alto

Principal e Alto, basta adicionar recursos a isso. Especialmente o alto perfil é frequentemente usado na transmissão:

O perfil principal para aplicativos de transmissão e armazenamento de disco, principalmente para aplicativos de televisão de alta definição (por exemplo, esse é o perfil adotado pelo formato de armazenamento Blu-ray Disc e pelo serviço de transmissão DVB HDTV).

As fatias B são, por exemplo, permitidas apenas no perfil principal e acima. Eles podem ser usados ​​para economizar largura de banda, mas são mais difíceis de decodificar, e é por isso que alguns dispositivos podem não suportá-los.

O que isso tem a ver com qualidade?

O perfil apenas influencia indiretamente a qualidade. Alguns recursos de perfis mais altos podem permitir que você obtenha a mesma qualidade com tamanhos de arquivo mais baixos em comparação com perfis mais baixos.

Por exemplo, a codificação de entropia CABAC ( Principal e Alta ) é mais eficiente que a CAVLC ( Linha de Base ). Também é computacionalmente mais intensivo. Portanto, se você der ao codificador uma certa taxa de bits para gastar, ele poderá criar um vídeo de melhor qualidade com o CABAC do que com o CAVLC, pois ele obtém uma compressão muito melhor.

Isso também explica por que você alcançou um tamanho de arquivo menor com o perfil Alto - obviamente, de alguma forma, você define um nível de qualidade constante e o codificador pode usar técnicas de compressão mais avançadas para criar um arquivo de vídeo com a mesma qualidade que o perfil da Linha de Base , mas com tamanhos menores. Tamanho.

Então ... qual você deve usar?

Algumas regras básicas:

  • Perfil de linha de base se você estiver segmentando dispositivos móveis antigos
  • Perfil principal ou alto, se você estiver segmentando streaming da Web, armazenamento de longo prazo, PCs ou Macs, criação de Blu-ray, etc.
slhck
fonte
8
Como isso foi escrito, praticamente todos os smartphones, incluindo Android e outros dispositivos, agora têm o perfil principal e muitos jogam alto. O suporte de alto perfil, por exemplo, é suportado pela maioria dos dispositivos que afirmam reproduzir conteúdo de alta definição. Você quase certamente pode confiar em principal ou superior. A linha de base era uma versão altamente prejudicada do H. 264 projetada para os dispositivos limitados das décadas passadas.
precisa
Nem todo mundo tem um smartphone recente. O Android ainda recomenda usar o perfil de linha de base . O mesmo vale para iOS . Obviamente, alguns dispositivos (a maioria dos novos) suportam perfis mais altos, mas se você quiser se manter compatível com o hardware de ponta, precisará escolher isso. Mas editei minha resposta para refletir o que você está dizendo.
slhck 24/11
Interessante - o player embutido tem me apoiado no main por um tempo, mas seu ponto é válido - você não pode confiar nisso. Você pode, no entanto, contar com players de software de terceiros para o perfil principal e alto, por exemplo, players como o MX Player têm suporte de software para perfis mais altos - desde que sejam baseados em ARM e com desempenho de CPU alto o suficiente.
precisa
Observe que, a partir de 2016, o Google Fotos, ao fazer backups, converte vídeos enviados que foram gravados em um Android Nexus 6 em High profile no perfil de linha de base (no modo de backup "alta qualidade" "armazenamento ilimitado grátis")
nealmcb
Ainda é a melhor informação que li sobre o ffmpeg em 2017. GREAT POST.
typeoneerror