У меня есть базовое потоковое видео h264 FFMPEG, которое мне нужно инкапсулировать в 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 максимального размера? таким образом я смогу избежать этой проблемы. Спасибо всем