Получать размер кадра из необработанного потока mpeg4? - PullRequest
2 голосов
/ 14 июля 2010

Кто-нибудь знает, как я могу получить размер кадра видео mpeg4 (не h264, т.е. Mpeg4 Part 2) из ​​потока битового видео?В настоящее время я пишу пользовательский источник мультимедиа для Windows Media Foundation, я должен предоставить медиатип, который требует размер кадра.это не работает без этого.есть идеи?спасибо

1 Ответ

3 голосов
/ 26 января 2011

Я не понимаю тебя.Вы пытаетесь узнать ширину и высоту передаваемого видео?Если это так (и я предполагаю, что это «измерение», которое вы ищете) вот как:

  1. Разбор потока для этого целого числа 000001B0 (шестнадцатеричный) это всегда первое, что вы получаете поток,Если нет, посмотрите SDP потока (если оно есть, и найдите поле config=, и вот оно ... только теперь это строка Base16!
  2. Чтение всех байтов до тех пор, пока выдобраться до целого числа 000001B6 (шестнадцатеричный)
  3. Вы должны получить что-то вроде этого (шестнадцатеричный): 000001B0F5000001B5891300000100000001200086C40FA28 A021E0A2
  4. Это «заголовок конфигурации потока» или фрейм или что-то, точное имяявляется последовательностью видеообъекта. Содержит всю информацию, необходимую декодеру для декодирования видеопотока.
  5. Считайте последние 4 байта (в моем примере они разделены одним пробелом - A021E0A2)
  6. Теперь просмотрите эти байты как одно 32-разрядное целое число без знака ...
  7. Чтобы получить width , прочитайте первые 8 бит, а затем умножьте то, что вы получите, на 4
  8. Пропустить следующие 7 бит
  9. Для получения высота прочитать следующие 9 бит
  10. В псевдокоде:

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

Вот и все ... ширина и высота. (:

...