FMUSER Transmitir vídeo e áudio sem fio mais fácil!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> albanês
ar.fmuser.org -> árabe
hy.fmuser.org -> armênio
az.fmuser.org -> Azerbaijão
eu.fmuser.org -> Basco
be.fmuser.org -> bielorrusso
bg.fmuser.org -> búlgaro
ca.fmuser.org -> catalão
zh-CN.fmuser.org -> Chinês (simplificado)
zh-TW.fmuser.org -> chinês (tradicional)
hr.fmuser.org -> croata
cs.fmuser.org -> checo
da.fmuser.org -> dinamarquês
nl.fmuser.org -> holandês
et.fmuser.org -> estoniano
tl.fmuser.org -> filipino
fi.fmuser.org -> finlandês
fr.fmuser.org -> francês
gl.fmuser.org -> galego
ka.fmuser.org -> georgiano
de.fmuser.org -> alemão
el.fmuser.org -> grego
ht.fmuser.org -> crioulo haitiano
iw.fmuser.org -> hebraico
hi.fmuser.org -> Hindi
hu.fmuser.org -> húngaro
is.fmuser.org -> islandês
id.fmuser.org -> indonésio
ga.fmuser.org -> irlandês
it.fmuser.org -> italiano
ja.fmuser.org -> Japonês
ko.fmuser.org -> coreano
lv.fmuser.org -> letão
lt.fmuser.org -> Lituano
mk.fmuser.org -> macedônio
ms.fmuser.org -> malaio
mt.fmuser.org -> maltês
no.fmuser.org - norueguês
fa.fmuser.org -> persa
pl.fmuser.org -> polonês
pt.fmuser.org -> português
ro.fmuser.org -> romeno
ru.fmuser.org -> russo
sr.fmuser.org -> Sérvio
sk.fmuser.org -> Eslovaco
sl.fmuser.org -> esloveno
es.fmuser.org -> espanhol
sw.fmuser.org -> Swahili
sv.fmuser.org -> sueco
th.fmuser.org -> Tailandês
tr.fmuser.org -> turco
uk.fmuser.org -> ucraniano
ur.fmuser.org -> Urdu
vi.fmuser.org -> vietnamita
cy.fmuser.org -> Galês
yi.fmuser.org -> iídiche
Prefácio
O algoritmo de compressão de vídeo H264 é agora, sem dúvida, o mais amplamente utilizado e mais popular de todas as técnicas de compressão de vídeo. Com a introdução de bibliotecas de código aberto, como x264 / openh264 e ffmpeg, a maioria dos usuários não precisa mais pesquisar muito sobre os detalhes do H264, o que reduz muito o custo das pessoas que usam o H264.
Mas, para fazer um bom uso do H264, ainda temos que descobrir os princípios básicos do H264. Hoje daremos uma olhada nos princípios básicos do H264.
Visão geral do H264
A tecnologia de compressão H264 usa principalmente os seguintes métodos para comprimir dados de vídeo. incluir:
A compressão de predição intra-frame resolve o problema de redundância de dados espaciais.
A compressão de predição entre quadros (estimativa e compensação de movimento) resolve o problema de redundância de dados no domínio do tempo.
Transformada discreta cosseno inteira (DCT), que transforma a correlação espacial em dados irrelevantes no domínio da frequência e a quantifica.
Compressão CABAC.
O quadro comprimido é dividido em: quadro I, quadro P e quadro B:
I frame: key frame, usando tecnologia de compressão intra-frame.
Quadro P: quadro de referência avançado, ao comprimir, refere-se apenas ao quadro previamente processado. Use a tecnologia de compressão de áudio de quadro.
Quadro B: Um quadro de referência bidirecional. Durante a compressão, refere-se ao quadro anterior e ao quadro seguinte. Usando tecnologia de compressão entre quadros.
Além dos quadros I / P / B, também existem sequências de imagens GOP.
GOP: Entre dois quadros I está uma sequência de imagens, e há apenas um quadro I em uma sequência de imagens. Como mostrado abaixo:
Agora vamos descrever a tecnologia de compressão H264 em detalhes.
Tecnologia de compressão H264
O princípio básico do H264 é realmente muito simples, vamos descrever brevemente o processo de compactação de dados do H264. Os quadros de vídeo capturados pela câmera (calculados a 30 quadros por segundo) são enviados para o buffer do codificador H264. O codificador deve primeiro dividir macroblocos para cada imagem.
Veja a seguinte imagem como exemplo:
Macrobloco de partição
O H264 usa uma área de 16X16 como um bloco de macro por padrão e também pode ser dividido em um tamanho de 8X8.
Depois de dividir o bloco macro, calcule o valor de pixel do bloco macro.
Por analogia, o valor do pixel de cada macrobloco em uma imagem é calculado e todos os macroblocos são processados da seguinte forma.
Sub-bloco
H264 usa macroblocos 16X16 para imagens relativamente planas. No entanto, a fim de atingir uma taxa de compressão mais alta, sub-blocos menores também podem ser divididos em macroblocos de 16X16. O tamanho do sub-bloco pode ser 8X16, 16X8, 8X8, 4X8, 8X4, 4X4, o que é muito flexível.
Na imagem acima, a maioria dos macroblocos 16X16 na moldura vermelha tem um fundo azul, e parte da imagem das três águias é desenhada neste macrobloco. Para processar melhor as imagens parciais das três águias, os sub-blocos múltiplos H264 são divididos em macroblocos 16X16.
Desta forma, após a compressão intra-frame, dados mais eficientes podem ser obtidos. A figura abaixo é o resultado da compressão dos macroblocos acima usando MPEG-2 e H264 respectivamente. A metade esquerda é o resultado da compressão após a divisão do sub-bloco MPEG-2, e a metade direita é o resultado da compressão do sub-bloco H264. Pode-se ver que o método de divisão H264 apresenta mais vantagens.
Após a divisão do bloco macro, todas as imagens no buffer do codificador H264 podem ser agrupadas.
Agrupamento de quadros
Para dados de vídeo, existem principalmente dois tipos de redundância de dados, um é redundância de dados no tempo e o outro é redundância de dados no espaço. Entre eles, a redundância de dados no tempo é a maior. Vamos primeiro falar sobre o problema de redundância do tempo de dados de vídeo.
Por que a redundância de tempo é maior? Supondo que a câmera capture 30 quadros por segundo, os dados desses 30 quadros são principalmente relacionados. Também é possível que mais de 30 quadros de dados, dezenas de quadros ou centenas de quadros de dados estejam intimamente relacionados.
Para esses quadros intimamente relacionados, na verdade, só precisamos salvar um quadro de dados, e outros quadros podem ser previstos a partir desse quadro de acordo com certas regras, de modo que os dados de vídeo tenham a maior redundância de tempo.
Para que os quadros relevantes comprimam os dados por meio do método de predição, é necessário agrupar os quadros do vídeo. Então, como determinar se certos quadros estão intimamente relacionados e podem ser agrupados? Vamos dar uma olhada em um exemplo. Abaixo está um quadro de vídeo capturado de um grupo de bolas de bilhar em movimento. As bolas de bilhar rolam do canto superior direito para o canto inferior esquerdo.
O codificador H264 tirará dois quadros adjacentes de cada vez para comparar os macroblocos a fim de calcular a similaridade dos dois quadros. Como mostrado abaixo:
Por meio da varredura de macroblocos e da pesquisa de macroblocos, pode-se verificar que a correlação entre os dois quadros é muito alta. Além disso, verifica-se que o grau de correlação deste grupo de frames é muito alto. Portanto, os quadros acima podem ser divididos em um grupo. O algoritmo é: nas imagens adjacentes, os pixels que geralmente são diferentes estão dentro de 10%, a diferença de brilho não excede 2% e a diferença de cromaticidade muda apenas dentro de 1%. Achamos que os gráficos podem ser agrupados.
Nesse grupo de quadros, após a codificação, mantemos apenas os dados completos do primeiro post, e os outros quadros são calculados com referência ao quadro anterior. Chamamos o primeiro quadro de quadro IDR / I e outros quadros chamamos de quadro P / B, então chamamos o grupo de quadro de dados codificado de GOP.
Estimativa e compensação de movimento
Depois que os frames são agrupados no codificador H264, é necessário calcular os vetores de movimento dos objetos no grupo de frames. Tomando o quadro de vídeo de bilhar em movimento acima como exemplo, vamos dar uma olhada em como ele calcula o vetor de movimento.
O codificador H264 primeiro tira dois quadros de dados de vídeo do cabeçalho do buffer em sequência e, em seguida, executa a varredura de macro block. Quando um objeto é encontrado em uma das imagens, a pesquisa é realizada nas proximidades da outra imagem (na janela de pesquisa). Se o objeto for encontrado em outra imagem neste momento, o vetor de movimento do objeto pode ser calculado. A imagem a seguir mostra a posição da bola de bilhar após a pesquisa.
Através da diferença entre as posições das bolas de bilhar na imagem acima, a direção e distância da imagem da mesa podem ser calculadas. H264 registra a distância e a direção do movimento da bola em cada quadro por vez, e se torna o seguinte.
Depois que o vetor de movimento é calculado, a mesma parte (ou seja, a parte verde) é subtraída para obter os dados de compensação. No final, precisamos apenas compactar e salvar os dados de compensação e, em seguida, a imagem original pode ser restaurada durante a decodificação. Os dados compactados só precisam registrar uma pequena quantidade de dados. Do seguinte modo:
Chamamos vetor de movimento e compensação de tecnologia de compressão entre quadros, que resolve a redundância de dados de quadros de vídeo no tempo. Além da compactação entre quadros, a compactação de dados também deve ser realizada dentro do quadro. A compressão de dados intra-quadro resolve a redundância de dados espaciais. Agora vamos apresentar a tecnologia de compressão intra-frame.
Predição intra
O olho humano tem um certo grau de reconhecimento da imagem, é muito sensível ao brilho de baixa frequência, e não é muito sensível ao brilho de alta frequência. Portanto, com base em algumas pesquisas, dados que não são sensíveis aos olhos humanos podem ser removidos de uma imagem. Desta forma, a tecnologia de predição intra é proposta.
A compressão intra-frame do H264 é muito semelhante ao JPEG. Depois que uma imagem é dividida em macroblocos, cada macrobloco pode ser previsto em 9 modos. Encontre o modo de previsão mais próximo da imagem original.
A imagem a seguir é o processo de previsão de cada bloco macro em toda a imagem.
A comparação entre a imagem após predição intra e a imagem original é a seguinte:
Em seguida, a imagem original e a imagem intrapreditada são subtraídas para obter um valor residual.
Em seguida, salve as informações do modo de previsão que obtivemos antes, para que possamos restaurar a imagem original durante a decodificação. O efeito é o seguinte:
Após a compressão intra-frame e inter-frame, embora os dados sejam bastante reduzidos, ainda há espaço para otimização.
Faça DCT em dados residuais
Os dados residuais podem ser submetidos à transformação discreta de cosseno inteiro para remover a correlação dos dados e compactar ainda mais os dados. Conforme mostrado na figura abaixo, o lado esquerdo é o macro bloco dos dados originais e o lado direito é o macro bloco dos dados residuais calculados.
O macrobloco de dados residuais é digitalizado conforme mostrado na figura abaixo:
A conversão DCT é realizada no macrobloco de dados residuais.
Depois de remover os dados associados, podemos ver que os dados são ainda mais compactados.
Depois que o DCT é feito, não é suficiente e o CABAC é necessário para compactação sem perdas.
CABAC
A compressão intra-frame acima é uma técnica de compressão com perdas. Em outras palavras, depois que a imagem é compactada, ela não pode ser restaurada completamente. CABAC é uma tecnologia de compressão sem perdas.
A tecnologia de compressão sem perdas pode ser a mais familiar para todos é a codificação de Huffman, um código curto para palavras de alta frequência, um código longo para palavras de baixa frequência para atingir o propósito de compressão de dados. O VLC usado no MPEG-2 é esse tipo de algoritmo, tomamos AZ como exemplo, A pertence aos dados de alta frequência e Z pertence aos dados de baixa frequência. Veja como isso é feito.
CABAC também é um código curto para dados de alta frequência e um código longo para dados de baixa frequência. Ao mesmo tempo, ele será compactado com base no contexto, que é muito mais eficiente do que o VLC. O efeito é o seguinte:
Agora substitua AZ por um quadro de vídeo e terá a seguinte aparência.
É óbvio pela imagem acima que o esquema de compactação sem perdas usando CACBA é muito mais eficiente do que VLC.
resumo
Neste ponto, concluímos o princípio de codificação H264. Este artigo fala principalmente sobre os seguintes pontos:
1. Jianyin introduziu alguns conceitos básicos em H264. Como quadro I / P / B, GOP.
2. Explicou os princípios básicos da codificação H264 em detalhes, incluindo:
Divisão de macro bloco
Agrupamento de imagens
Princípio da tecnologia de compressão intra-frame
O princípio da tecnologia de compressão inter-frame.
DCT
Princípio de compressão CABAC.
|
Digite o e-mail para obter uma surpresa
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> albanês
ar.fmuser.org -> árabe
hy.fmuser.org -> armênio
az.fmuser.org -> Azerbaijão
eu.fmuser.org -> Basco
be.fmuser.org -> bielorrusso
bg.fmuser.org -> búlgaro
ca.fmuser.org -> catalão
zh-CN.fmuser.org -> Chinês (simplificado)
zh-TW.fmuser.org -> chinês (tradicional)
hr.fmuser.org -> croata
cs.fmuser.org -> checo
da.fmuser.org -> dinamarquês
nl.fmuser.org -> holandês
et.fmuser.org -> estoniano
tl.fmuser.org -> filipino
fi.fmuser.org -> finlandês
fr.fmuser.org -> francês
gl.fmuser.org -> galego
ka.fmuser.org -> georgiano
de.fmuser.org -> alemão
el.fmuser.org -> grego
ht.fmuser.org -> crioulo haitiano
iw.fmuser.org -> hebraico
hi.fmuser.org -> Hindi
hu.fmuser.org -> húngaro
is.fmuser.org -> islandês
id.fmuser.org -> indonésio
ga.fmuser.org -> irlandês
it.fmuser.org -> italiano
ja.fmuser.org -> Japonês
ko.fmuser.org -> coreano
lv.fmuser.org -> letão
lt.fmuser.org -> Lituano
mk.fmuser.org -> macedônio
ms.fmuser.org -> malaio
mt.fmuser.org -> maltês
no.fmuser.org - norueguês
fa.fmuser.org -> persa
pl.fmuser.org -> polonês
pt.fmuser.org -> português
ro.fmuser.org -> romeno
ru.fmuser.org -> russo
sr.fmuser.org -> Sérvio
sk.fmuser.org -> Eslovaco
sl.fmuser.org -> esloveno
es.fmuser.org -> espanhol
sw.fmuser.org -> Swahili
sv.fmuser.org -> sueco
th.fmuser.org -> Tailandês
tr.fmuser.org -> turco
uk.fmuser.org -> ucraniano
ur.fmuser.org -> Urdu
vi.fmuser.org -> vietnamita
cy.fmuser.org -> Galês
yi.fmuser.org -> iídiche
FMUSER Transmitir vídeo e áudio sem fio mais fácil!
Contato
Endereço:
No.305 Sala HuiLan Edifício No.273 Huanpu Road Guangzhou China 510620
Categorias
Newsletter