Изменение задержки и джиттера потока rtmp с использованием OBS и nginx - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть камера MEVO, которую я использую для потоковой передачи видео в OBS через мой сервер Debian nginx RTMP. У меня также есть веб-камера USB, подключенная напрямую к моему P C под управлением OBS, и я транслирую видео со своего смартфона на OBS через тот же сервер nginx rtmp и приложение под названием Larix Broadcaster. Загрузка процессора OBS P C: 15%; nginx rtmp сервер: 2%.

MEVO               > nginx-rtmp > OBS
USB webcam                      > OBS
Smartphone (Larix) > nginx-rtmp > OBS

Это работает, но потоки не синхронизированы c друг с другом. Между MEVO и OBS существует задержка около 2-5 секунд (и между Larix и OBS также существует другая задержка). Веб-камера мгновенная. Я не возражаю против задержки в 2 секунды - я могу установить ручную асинхронную задержку c в OBS на веб-камере, чтобы синхронизировать c с MEVO. Проблема в том, что задержка не является постоянной. Каждый раз, когда я начинаю потоковую передачу MEVO, она меняется!

Затем, когда мне наконец удается синхронизировать c потоки (счастливый выстрел), также , в то время как потоковая передача их go в и из син c (джиттер). Только в диапазоне 100-200 мс, но достаточно, чтобы его можно было увидеть.

Глядя на MEVO, я считаю, что он поддерживает только RTMP. Поэтому переход на другой протокол не будет работать для меня.

Что может быть причиной дрожания и изменения задержки? Может ли это быть сеть? MEVO и OBS находятся в быстрой проводной сети 1 Гбит / с.

Я попытался установить для параметра «Сетевая буферизация в OBS» значение 1 МБ, 2 МБ или что-то еще, но это не помогло. Я также попытался изменить buflen в nginx .conf, но безрезультатно.

nginx .conf:

worker_processes  1;

events {
    worker_connections  1024;
}

rtmp {
    server {
        listen 1935;
        chunk_size 4096;
        buflen 1000ms;
        application live {
            live on;
            record off;
            max_connections 20;
        }
    }
}
  • Я транслирую MEVO в rtmp : //10.0.0.1/live/mevo (mevo - это ключ потока )
  • Я передаю Larix в rtmp: //10.0.0.1/live/larix (larix - это ключ потока )

Пожалуйста, помогите мне исправить дрожание и изменение задержки в OBS! Спасибо.


Обновление, поскольку я пытаюсь исправить изменяющийся запуск лаг:

  • Я попытался установить chunk_size в 2048, но это не так t help.
  • Когда я добавляю: wait_key on; Я никогда не получаю поток для показа в OBS.

Есть идеи?

1 Ответ

2 голосов
/ 07 апреля 2020

Я из команды Softvelum, которая стоит за Larix Broadcaster.

Я бы порекомендовал изменить «Частоту ключевых кадров» на 1 секунду и установить «Максимальное количество элементов буфера» на 70. Вы можете прочитать Q13 из этого стр. https://softvelum.com/larix/faq/, чтобы узнать больше об этой настройке. Что касается "перехвата" syn c -up - это происходит, если вы начинаете потоковую передачу близко к началу ключевого кадра. Если у вас есть 300 элементов в буфере - это около 3 секунд, так что вы можете оказаться посередине и отстать на 1,5-2 секунды в реальном времени.

Попробуйте поиграть с буфером и ключевым кадром, чтобы увидеть, как он работы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...