Como a taxa de bits difere para a mesma resolução e taxa de quadros?


15

Lendo sobre a qualidade do vídeo, descobri que depende da resolução, quadros por segundo e taxa de bits, que decide o tamanho do vídeo.

Minha pergunta é como a taxa de bits é calculada e como ela pode diferir.

Digamos que um vídeo tenha uma resolução de 360 ​​x 240. São necessários 86400 pixels por quadro. A taxa de quadros é de 30 Hz. Portanto, o vídeo ocupa 86400 × 30 = 2592000 pixels por segundo.

Digamos que 1 pixel seja 3 bytes (24 bits) de dados: temos um vídeo de 2592000 × 24 bits por segundo (62208000 bits), ou seja, 62208 kBits (isso não parece certo, talvez seja um problema no meu cálculo).

Mas como pode diferir e como faz diferença na qualidade?


Se o vídeo fosse uma sequência de imagens de bitmap. Sua matemática já está desativada para arquivos de imagem png / jpg.
Daniel Beck

As duas respostas existentes não enfatizam o atributo saliente da compactação de vídeo: a maioria (se não todos) de todos os codecs de vídeo emprega compactação com perdas. Ou seja, algumas informações da imagem são descartadas quando o vídeo bruto é compactado e codificado. A quantidade ou o grau de informações / detalhes descartados e perdidos da imagem é determinado por um fator de qualidade . Quanto à compactação de áudio, existem técnicas de compactação com e sem perdas.
sawdust

@sawdust: Eles não? Eu pensei que meu terceiro parágrafo deixasse isso bem claro. De qualquer forma, fornecer muitas informações às vezes não é tão bom; Acredito em dar o suficiente para permitir que o solicitante aprenda mais, se desejado. Caso contrário, eu poderia dizer que seu post não enfatizar por que alguém iria escolher um compressor sobre a outra, ou por que há tantos métodos diferentes, etc, etc.
Marty Fried

@sawdust Você está correto, isso foi enterrado na parte JPEG. Eu adicionei um pouco mais de detalhes.
slhck

Respostas:


21

O que você calculou é a taxa de bits de um vídeo bruto e não compactado. Você normalmente não os encontrará, exceto em pesquisas ou outros aplicativos especializados. Até as emissoras usam vídeo compactado, embora com uma taxa de bits muito maior que o seu vídeo típico do YouTube.

Portanto, a qualidade do vídeo tem muito a ver com a forma como o vídeo foi compactado. Quanto mais você o comprime, menos bits são necessários por quadro. Além disso, quanto mais você comprime, pior é a qualidade. Agora, alguns vídeos são muito mais fáceis de compactar do que outros - em essência, é por isso que eles têm uma taxa de bits mais baixa, embora tenham a mesma resolução e taxa de quadros.

Para entender por que isso ocorre, você precisa estar ciente dos dois princípios principais usados ​​na compactação de vídeo. Estes são chamados de "espacial" e "redundância temporal".

Redundância espacial

Existe redundância espacial em imagens que mostram conteúdo natural. Essa é a razão pela qual o JPEG funciona tão bem - compacta os dados da imagem porque os blocos de pixels podem ser codificados juntos. Estes são 8 × 8 pixels, por exemplo. Estes são chamados "macroblocos".

Os codecs de vídeo modernos fazem o mesmo: eles basicamente usam algoritmos semelhantes ao JPEG para compactar um quadro, bloco por bloco. Portanto, você não armazena mais bits por pixel, mas bits por macrobloco, porque "resume" os pixels em grupos maiores. Ao resumi-los, o algoritmo também descartará informações que não são visíveis ao olho humano - é aqui que você pode reduzir a maior parte da taxa de bits. Ele funciona quantizando os dados. Isso reterá frequências que são mais perceptíveis e "jogará fora" aquelas que não podemos ver. O fator de quantificação é expresso como "QP" na maioria dos codecs e é o principal botão de controle da qualidade.

Agora você pode avançar e prever macroblocos a partir de macroblocos que foram codificados anteriormente na mesma imagem. Isso é chamado de previsão interna . Por exemplo, uma parte de uma parede cinza já estava codificada no canto superior esquerdo do quadro, para que possamos usar esse macrobloco no mesmo quadro novamente, por exemplo, para o macrobloco ao lado dele. Vamos apenas armazenar a diferença que tinha na anterior e salvar os dados. Dessa forma, não precisamos codificar dois macroblocos muito parecidos entre si.

Por que a taxa de bits muda para o mesmo tamanho de imagem? Bem, algumas imagens são mais fáceis de codificar do que outras. Quanto maior a atividade espacial, mais você precisará codificar. Texturas suaves ocupam menos bits do que as detalhadas. O mesmo vale para a previsão intra: uma moldura de uma parede cinza permitirá que você use um macrobloco para prever todas as outras, enquanto uma moldura de água corrente pode não funcionar tão bem.

Redundância temporal

Isso existe porque um quadro após outro quadro é provavelmente muito semelhante ao seu antecessor. Principalmente, apenas um pouquinho muda, e não faria sentido codificá-lo completamente. O que os codificadores de vídeo fazem é apenas codificar a diferença entre dois quadros subsequentes, assim como eles podem fazer com macroblocos.

Tomando um exemplo do artigo da Wikipedia sobre compensação de movimento , digamos que este seja o seu quadro original:

Então a diferença para o próximo quadro é exatamente isso:

O codificador agora armazena apenas as diferenças reais , não os valores pixel por pixel. É por isso que os bits usados ​​para cada quadro não são os mesmos todas as vezes. Esses quadros de "diferença" dependem de um quadro totalmente codificado e é por isso que existem pelo menos dois tipos de quadros para codecs modernos:

  • Quadros I (também conhecidos como quadros-chave) - esses são os totalmente codificados
  • Quadros P - estes são os que armazenam a diferença

Ocasionalmente, é necessário inserir quadros I em um vídeo. A taxa de bits real depende também do número de quadros I utilizados. Além disso, quanto maior a diferença de movimento entre dois quadros subsequentes, mais o codificador precisa armazenar. Um vídeo em movimento "nada" será mais fácil de codificar do que um vídeo esportivo e usará menos bits por quadro.


+1 - foi o que eu quis dizer, mas meu algoritmo de compressão ficou um pouco fora. :)
Marty Fried

+1 Isso é tudo o que eu precisava. Especialmente a compensação de movimento. Graças
vincent Mathew

6

Acredito que sua matemática esteja realmente correta, mas há um pouco mais; compressão é o link que falta aqui.

Você calculou a taxa de bits descompactada e descobriu o motivo da compactação. As taxas de bits se tornam impossivelmente grandes com o vídeo não compactado. Então, eles compactam o vídeo na fonte e descompactam no receptor, e a taxa de bits se torna gerenciável. Você só precisa de um descompressor rápido o suficiente, que pode ser hardware ou software.

Portanto, o problema passa a ser o quanto a compactação pode ser tolerada - geralmente não é sem perdas, então você está perdendo informações, mas elas tentam torná-las inteligentes o suficiente para perder os dados menos importantes que não serão tão perceptíveis. Geralmente é bastante fácil até que haja muito movimento, então fica mais complicado.

Editar: Esqueci de adicionar, mas as partes que implementam o método de compactação são o codec; Percebi que você usou isso como uma tag em sua postagem.


3
Além disso, o fato de a compactação de vídeo geralmente não ser baseada em pixels, mas funciona em blocos de pixels, os chamados macroblocos .
Slhck
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.