Поток VP8 поступает от плагина Janus Videoroom с локальным переадресацией на 10002/10004.Оттуда он получает следующий конвейер gstreamer:
gst-launch-1.0 -v udpsrc \
caps="application/x-rtp,media=(string)video,encoding-name=(string)VP8,payload=100" \
address=127.0.0.1 port=10004 ! \
rtpvp8depay ! rtpvp8pay ! \
udpsink host=127.0.0.1 port=5004
и отправляется в плагин Streaming.Как видите, здесь нет транскодирования, только депай-загрузка и полезная загрузка.результирующее видео разбивается на артефакты на некоторых ключевых кадрах, примерно один раз в 10 ключевых кадрах, только для исправления на следующем ключевом кадре.
если я удаляю depay и pay, просто перенаправляя на уровень rtp, чтобы получить это
gst-launch-1.0 -v udpsrc \
caps="application/x-rtp,media=(string)video,encoding-name=(string)VP8,payload=100" \
address=127.0.0.1 port=10004 ! \
udpsink host=127.0.0.1 port=5004
этого никогда не происходит.
Я понимаю, что это не проблема Януса, а проблема gstreamer.а может у кого есть идеи в чем может быть проблема?это было очень надежно проверено, проблему легко воспроизвести в первом случае и никогда не происходит во втором.
Конечно, цель того, что я делаю, - это транскодирование, и было намного больше вустановка и конвейер, прежде чем я сварил его до этого уровня.Воспроизводится на Janus, установленном на новой машине с Ubuntu 18.04, со всеми стандартными настройками.
update:
export GST_DEBUG="rtp*:4";
выдает это сообщение об ошибке, которое исчезает каждый раз, когда появляются артефакты:
rtpbasedepayload gstrtpbasedepayload.c:473:gst_rtp_base_depayload_handle_buffer:
<rtpvp8depay0> 12 <= 100, dropping old packet
с числом «12», колеблющимся, как правило, между 5 и 12.