Pergunta

Eu quero entender como vídeo e obras de decodificação de áudio, especialmente a sincronização de tempo (como conseguir 30fps de vídeo, como casal que com áudio, etc.). Eu não quero saber todos os detalhes, apenas a essência dele. Eu quero ser capaz de escrever uma simplificação alto nível de um decodificador de vídeo / áudio real.

Você poderia fornecer ponteiros para mim? Um real C / código-fonte C ++ de um decodificador de vídeo MPEG2 / áudio seria o caminho mais rápido para entender essas coisas que eu penso.

Foi útil?

Solução

Você pode navegar código-fonte do ffmpeg (disponível através de SVN), ou a sua documentação da API .

Outras dicas

código fonte de leitura de um codec que as obras parece ser o caminho certo a seguir. Eu sugiro o seguinte:

http://www.mpeg.org/MPEG/ video / free-mssg-mpeg-software.html

Tendo em conta que é mencionada no site da mpeg.org, eu diria que você vai encontrar o que você precisa aqui.

No passado, eu tive algum tempo para trabalhar em decodificação de vídeos MPEG (sem embora áudio), e os princípios são muito simples. Existem algumas imagens puras incluídos, algumas imagens intermediários que são descritos relativamente aos mais próximos os principais, eo resto são descritos utilizando as principais imagens mais próximas / intermediários.

Um espaço de tempo, uma imagem. Mas codecs recentes são muito mais complicadas, eu acho!

EDIT: sincronização

Não sou especialista na sincronização de áudio e vídeo, mas a questão parece ser tratada com o uso de uma camada de sincronização (veja para definição).

Para a sincronização de áudio / vídeo, basicamente, cada vídeo e quadro de áudio deve ser carimbada em tempo. A data e hora é normalmente conhecido como (carimbo Tempo de Apresentação) PTS. Uma vez que um vídeo / áudio é decodificador pelo descodificador, o processador de áudio / vídeo deve agendar o quadro a ser exibido no momento certo para que o áudio / vídeo está sincronizado.

Eu acho que você pode se no capítulo " sincronismo Modelo " de MPEG2 Tutorial para mais detalhes.

Dependendo de quanto você sabe sobre o formato MPEG-2, você pode querer obter uma visão ampla, lendo um artigo sobre ele em primeiro lugar. Quero dizer algo como estes:

Um guia para iniciantes para MPEG -2 padrão

MPEG-2 de compressão de vídeo

@ Patric e Nils

Então você diz que existem marcas de tempo, hein ... Estes são para a parte de vídeo só eu acho. Para áudio Eu acho que há informações suficientes no cabeçalho (como "amostras por segundo"). Quantas vezes são necessários esses carimbos de tempo? Imagino que o entrelaçamento de pacotes de áudio e vídeo garante que os dados de vídeo é sempre à frente de dados de áudio ou algo assim?

EDIT: Encontrado o que eu precisava: http://www.dranger.com/ffmpeg/tutorial01.html

Helltone,

Timestamps para dados de áudio ainda são necessários porque o quadro de áudio e vídeo podem não estar alinhados no mesmo lugar. Por exemplo:

V: 1000 1040 1080 1120 ... A: 990 1013 1036 (perdido) 1082

Você pode precisar para compensar a diferença entre o primeiro vídeo frame / áudio. Além disso, se é possível que haja perda de pacotes (durante streaming de vídeo), você precisa das marcas de tempo de ambos vídeo / áudio para manter a sincronização precisa.

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