Frage

Weiß jemand, wie ich die Bilddimension eines MPEG4-Videos abrufen kann (nicht h264, d. h.Mpeg4 Teil 2) aus dem Rohvideo-Bitstream?Ich schreibe gerade eine benutzerdefinierte Medienquelle für Windows Media Foundation. Ich muss einen Medientyp bereitstellen, der die Framegröße benötigt.Ohne geht es nicht.irgendwelche Ideen?Danke

War es hilfreich?

Lösung

Ich verstehe dich nicht.Versuchen Sie, die Breite und Höhe des gestreamten Videos zu ermitteln?Wenn ja (und ich vermute, dass es sich um die „Dimension“ handelt, nach der Sie suchen), gehen Sie wie folgt vor:

  1. Analysieren Sie den Stream nach dieser Ganzzahl 000001B0(hex) Es ist immer das erste, was gestreamt wird.Wenn nicht, sehen Sie sich das SDP des Streams an (sofern vorhanden, und suchen Sie nach config= Feld, und da ist es...nur jetzt ist es ein Base16-String!
  2. Lesen Sie alle Bytes, bis Sie zur Ganzzahl gelangen 000001B6(verhexen)
  3. Sie sollten so etwas erhalten (hex): 000001B0F5000001B5891300000100000001200086C40FA28 A021E0A2
  4. Dies ist der „Stream-Konfigurationsheader“ oder Frame oder was auch immer, der genaue Name ist Video Object Sequence.Es enthält alle Informationen, die ein Decoder zum Dekodieren des Videostreams benötigen würde.
  5. Lesen Sie die letzten 4 Bytes (in meinem Beispiel sind sie durch ein Leerzeichen getrennt – A021E0A2)
  6. Betrachten Sie diese Bytes nun als eine 32-Bit-Ganzzahl ohne Vorzeichen ...
  7. Zu bekommen Breite Lesen Sie die ersten 8 Bits und dann Multiplizieren Sie das Ergebnis mit 4
  8. Die nächsten 7 Bits überspringen
  9. Zu bekommen Höhe Lesen Sie die nächsten 9 Bits
  10. Im Pseudocode:

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

Los geht's...Breite und Höhe.(:

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top