Получение типа потока из пакетов Rtp или другими способами

#directshow #h.264 #rtp #mpeg-4

#directshow #ч.264 #rtp #mpeg-4

Вопрос:

У меня есть простой фильтр источника Rtsp, который подключает Rtsp-сервер и получает пакеты Rtp. Проблема в том, что мне нужно установить подтип носителя в моем выводе фильтра источника Rtsp…[Теперь я жестко задаю подтип]

 pMediaType->SetSubtype(amp;MyHardCodedSubTypeGUID);
  

Я хочу динамически создавать свой pin-код с подтипом в соответствии с поступающим потоком. Я получаю потоки h264 и mpeg-4 с сервера.Их формат полезной нагрузки пакетов rtp является динамическим: 96…Не помогает мне определить, является ли stream mpeg4 или h264…

FFmpeg может получить тип потока [h264, mpeg4] из информации о кодеке … но как я могу сделать сам?

С наилучшими пожеланиями

Ответ №1:

Полезная нагрузка RTP не только динамическая (96, 97 и т.д.), Она также снабжена атрибутами типа полезной нагрузки, которые вам нужны для получения формата и преобразования в тип носителя DirectShow (см. «H264 *» ниже):

 m=video 0 RTP/AVP 96 
a=rtpmap:96 H264/90000 
a=control:trackID=1
a=fmtp:96 packetization-mode=1