Я работаю над приложением, которое должно передавать H.264-кодированное видео в режиме реального времени через UDP (своего рода видеозвонок).
Недавно мы переключились на аппаратный кодер, который поддерживает только ограниченное число профилей H.264. В результате каждый кодированный видеокадр теперь состоит из одного NALu. Точнее, для кадров IDR (key) кодер производит SSP, PSP и единый срез IDR, для других - единый фрагмент без IDR.
Теперь моя цель состоит в том, чтобы разделить срез NALu на несколько более мелких, потому что в случае потери пакета, если NALu невозможно собрать полностью - он полностью потерян. Как минимум, мне нужно разбивать срез пространственно, т.е. Помещать диапазоны макроблоков в разные NALus. Если возможно - я также хотел бы извлечь качественные слои, чтобы базовый уровень мог быть защищен более избыточными пакетами (FEC).
Примечание. Я не говорю о перекодировке. Это о переупаковке/переформатировании, поиске блоков данных определения макроблоков и их другом.
Теперь я пытаюсь проанализировать соответствующие заголовки данных: SPS, PPS и кодированные фрагменты, используя как стандартные спецификации H.264, так и некоторый код декодеров с открытым кодом. Задача кажется возможной, хотя и довольно сложной, с большим количеством технических деталей.
Мой вопрос: это известная проблема? Есть ли API/библиотека, которая делает именно это?