Pergunta

alguém sabe como posso recuperar a dimensão do caixilho de um vídeo mpeg4 (não h264, i.é.Mpeg4 Parte 2) a partir de matérias-bitstream de vídeo?im actualmente a escrever um costume de origem de mídia para o windows media foundation, que eu tenho para oferecer um mediatype que precisa do tamanho do quadro.ele não funciona sem ele.qualquer idéias?obrigado

Foi útil?

Solução

Eu não estou sendo você.Você está tentando para saber a largura e a altura do vídeo que está sendo transmitido?Se assim (e eu acho que ele é a "dimensão" o que você está procurando) aqui está como:

  1. Analisar o fluxo para este inteiro 000001B0(hex) é sempre a primeira coisa que você conseguir o transmitido.Se não, consulte o SDP da sequência (se você tiver alguma, e pesquise config= campo, e lá está ele...só que agora ele é um Base16 cadeia!
  2. Leia todos os bytes até chegar ao número inteiro 000001B6(hex)
  3. Você deve obter algo como isto (hex): 000001B0F5000001B5891300000100000001200086C40FA28 A021E0A2
  4. Este é o "stream configuração de cabeçalho" ou quadro ou o que quer, nome exato é o Objeto de Vídeo em Sequência.Ela mantém todas as informações de um decodificador seria necessário para decodificar o fluxo de vídeo.
  5. Leia os últimos 4 bytes (no meu exemplo elas são separadas por um espaço -- A021E0A2)
  6. Agora observe estes bytes como um 32-bit inteiro...
  7. Para obter largura leia os primeiros 8 bits e, em seguida, multiplicar o que você ganha com 4
  8. Pular próximos 7 bits
  9. Para obter altura ler próximo de 9 bits
  10. Em pseudo-código:

      WIDTH = readBitsUnsigned(array, 8) * 4;
      readBitsUnsigned(array, 7);
      HEIGHT = readBitsUnsigned(array, 9);
    

Lá vai...largura e altura.(:

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