Потоковая передача RTMP на JANUS-Gateway показывает только битрейт, но не видео

В настоящее время я использую плагин потоковой передачи следующим образом: Причудливая архитектура здесь

OBS--------RTMP--------->NGINX-Server------FFMPEG(вход RTMP-выход RTP)--------->JANUS--- ------webrtc-------->Клиент

При использовании команды ffmpeg (см. ниже) в интерфейсе потоковой передачи Janus мы видим только битрейт, соответствующий выходным данным ffmpeg в консоли, но не видим никакого видео.

ffmpeg -i rtmp://localhost/live/test -an -c:v copy -flags global_header -bsf dump_extra -f rtp rtp://localhost:8004 

(используя «-c:v copy», чтобы не использовать кодировку и, следовательно, уменьшать задержку)

Видео показывает нормально, если я использую "-c:v libx264", единственная проблема заключается в том, что он загружает ЦП и увеличивает задержку.

Раньше я пытался использовать RTSP в качестве входных данных для FFMPEG, и в этом случае видео показывается нормально почти без задержки, даже если я использую «-c: v copy».

Поэтому я действительно не понимаю, почему для RTSP копия работает нормально, а для RTMP мне приходится использовать кодек libx264. Если у кого-то есть идея по этому поводу, я весь внимание :)


person Ilyas OUMNIH    schedule 25.03.2020    source источник
comment
Вы использовали один и тот же кодек для RTSP и RTMP? т. е. выводит ли OBS H.264 в RTMP? Кстати, есть профили в H.264 для низкой задержки и высокой производительности.   -  person TimTim Wong    schedule 21.08.2020


Ответы (1)


У меня была аналогичная проблема, и моя проблема заключалась в том, что поток/видео, которые я использовал, имеют большой размер GOP. Для WebRTC задержка составляет доли секунды, поэтому источник ввода должен иметь короткие интервалы I-кадров. Лучше удалить B-кадры, так как они также ссылаются назад и вперед.

Вот команды, которые вы можете использовать для небольшого размера GOP (4) и удаления B-кадров.

Использование потокового RTMP src:

ffmpeg rtmp://<your_src> -c:v libx264 -g 4 -bf 0 -f rtp -an rtp://<your_dst>

Использование файла mp4:

ffmpeg -re -i test.mp4 -c:v libx264 -g 4 -bf 0 -f rtp -an rtp://<your_dst>

-c:v copy не уменьшает задержку. Он просто говорит ffmpeg не перекодировать.

person Fei    schedule 14.04.2021