У меня есть потоковое базовое видео FFMPEG h264, которое я должен инкапсулировать в RTP и отправить на SIP-телефоны для их декодирования. Я использую Linphone с плагином h264 для Windows и Mirial для декодирования. Однако иногда я получаю огромный размер кадра (3Kb ~ 9Kb) от FFMPEG, который явно не помещается в MTU.
Если я отправлю эти кадры «как есть» и доверюсь функции IP-фрагментации, некоторые телефоны смогут воспроизвести их достаточно хорошо, а другие захлебнутся и не смогут декодировать поток. Я думаю, это связано с тем, что поток не совместим с RFC 3984, в котором указано, что пакеты, которые не соответствуют MTU, должны быть разделены на разные NALU и помечать конец кадра функцией Mark RTP.
Как мне узнать, где я могу «вырезать» кадр I или P? Я заметил, что фрагментированные пакеты h264 (без метки Mark) иногда заканчиваются на 0xF8, но не могут получить шаблон, а в RFC 3984, описывающем, как отправлять эти пакеты по RTP, не указано, как это сделать.
ОБНОВЛЕНИЕ: Кто-нибудь знает, как сообщить библиотеке X264, как генерировать NALU максимального размера? таким образом я должен быть в состоянии избежать этой проблемы. Всем спасибо