Уменьшить задержку с помощью FFplay для HDMI-кодеров | Exvist Support

FAQ: Уменьшение задержки с помощью FFplay для кодировщика

Пошаговое руководство по снижению задержки с помощью FFplay

1. Установить FFmpeg и FFplay

Убедитесь, что FFmpeg (который включает FFplay) установлен в вашей системе. Вы можете проверить, установлен ли он, запустив:
  1. ffplay -версия
Если он не установлен, вы можете скачать и установить FFmpeg изОфициальный сайтили используйте менеджер пакетов, напримерaptилиЗаваритьна основе вашей операционной системы.

2. FFplay с RTSP Open Stream

Начните с запуска FFplay с URL потока RTSP:
  1. ffplay rtsp://192.168.1.120:554/live/1_0
Заменитьrtsp://192.168.1.120:554/live/1_0с фактическим URL-адресом видеокодера RTSP.

3. Отрегулируйте размер буфера

Уменьшить размер буфера по умолчанию, чтобы свести к минимуму задержку. Используйте флаг -rtsp_transport для выбора транспортного протокола (TCP или UDP). Обычно UDP приводит к снижению задержки.
Пример команды:
  1. ffplay -rtsp_transport udp -fflags nobuffer -analyzeduration 0 -probesize 32 rtsp://192.168.1.120:554/live/1_0
Пояснение:
  1. -rtsp_transport udpСилы транспортировки UDP, которая, как правило, ниже задержки, чем TCP.
  2. -fflags NobufferОтключает буферирование для уменьшения задержки.
  3. -анализированная 0Ограничает время, которое FFplay тратит на анализ потока, помогая начать воспроизведение быстрее.
  4. -размер 32Ограничает объем данных, используемых для зондирования потока, что также уменьшает задержку.

4. Настройка видеовывода

Используйте флаг синхронизации видео. Настройка его на видео заставляет FFplay синхронизироваться с видеопотоком, что может помочь снизить задержку.
Пример команды:
  1. ffplay -rtsp_transport udp -fflags nobuffer -analyzeduration 0 -probesize 32 -синхронизация видео rtsp://192.168.1.120:554/live/1_0

5. Уменьшить видео и аудио буферирование

Отключить или свести к минимуму воспроизведение звука с помощью -vn (без видео) или настроить размеры аудиобуфера с помощью -an (без аудио), если аудио не необходимо для тестирования.
Пример:
  1. ffplay -rtsp_transport udp -fflags nobuffer -analyzeduration 0 -probesize 32 -синхронизация видео -an rtsp://192.168.120:554/live/1_0

6. Опции декодирования тонкой настройки

Добавить опции для оптимизации производительности декодирования и минимизации задержки. Например:
  1. ffplay -rtsp_transport udp -fflags nobuffer -analyzeduration 0 -probesize 32 -синхронизация видео -an -flags low_delay rtsp://192.168.1.120:554/live/1_0

7. Дополнительные оптимизации (необязательно)

Вы можете дополнительно настроить FFplay, используя флаги -x и -y для указания размера видеоокна и -framedrop на выброс кадров, если они не могут быть обработаны достаточно быстро:
  1. ffplay -rtsp_transport udp -fflags nobuffer -analyzeduration 0 -probesize 32 -sync video -an -framedrop -flags low_delay -x 640 -y 360 rtsp://192.168.1.120:554/live/1_0
Пояснение:
  1. -framedropКадры падают, когда система не может идти в ногу с декодированием, уменьшая буферирование.
  2. - 640 -y 360Указывает разрешение для воспроизведения видео, уменьшая рабочую нагрузку для декодирования.

Окончательный пример команды

  1. ffplay -rtsp_transport udp -fflags nobuffer -analyzeduration 0 -probesize 32 -sync video -an -framedrop -flags low_delay -x 640 -y 360 rtsp://192.168.1.120:554/live/1_0

8. Монитор задержки

После настройки контролируйте воспроизведение, чтобы наблюдать снижение задержки. Вы можете использовать такие инструменты, как FFprobe, для измерения задержки в режиме реального времени, проверив детали потока.
Пример команды FFprobe для проверки статистики потока:
  1. ffprobe -v tiho -print_format json -show_streams rtsp://192.168.1.120:554/live/1_0
Используя вышеуказанные команды и настраивая различные флаги, вы можете эффективно уменьшить задержку при тестировании потока RTSP из видеокодера.

Пошаговое руководство по дальнейшему снижению задержки с помощью FFplay

Если вы испытываете повышенную задержку после соблюдения предоставленных инструкций, может быть несколько причин, почему это происходит. Вот некоторые потенциальные причины и способы их устранения:

1. Настройки буфера (неправильная регулировка буфера)

У них-fflags NobufferФлаг предназначен для минимизации буферирования, но в некоторых случаях это может привести к нестабильности или увеличению задержки, особенно если условия сети не идеальны. FFplay может изо всех сил пытаться плавно обработать кадры без достаточного количества буфера, вызывая дополнительные задержки в воспроизведении.

РешениеПопробуйте скорректировать буферную стратегию. Вместо полного отключения буферирования вы можете использовать более консервативную настройку буфера или удалить-fflags NobufferФлаг:

  1. ffplay -rtsp_transport udp -analyzeduration 0 -probesize 32 -синхронизация видео rtsp://192.168.1.120:554/live/1_0

2. Транспортный протокол RTSP (UDP против TCP)

Переключение наUdpКак правило, быстрее, чем TCP для потоковой передачи RTSP, но это может привести к потере пакета или трессованию при определенных сетевых условиях, в результате чего декодер задерживает обработку. Если сеть не стабильна, используяUdpЭто может непреднамеренно увеличить задержку, поскольку FFplay пытается компенсировать потерянные или поврежденные пакеты.

РешениеТест с :ТкпПосмотрим, улучшится ли транспорт задержка. Используйтеrtsp_transport tcpВынудить флаг TCP:
ffplay -rtsp_transport tcp -analyzeduration 0 -probesize 32 -синхронизация видео rtsp://192.168.1.120:554/live/1_0

3. Падение рамы

У них-framedropФлаг говорит FFplay выбросить кадры, если он не в состоянии расшифровать их вовремя, что должно уменьшить задержку. Однако, если слишком много кадров сброшено, это может привести к увеличению задержек, поскольку восстановление и ресинхронизация FFplay может занять больше времени.

РешениеЕсли падение кадра чрезмерно, попробуйте удалить-framedropили уменьшить его воздействие флага:
  1. ffplay -rtsp_transport udp -analyzeduration 0 -probesize 32 -синхронизация видео rtsp://192.168.1.120:554/live/1_0
Альтернативно, вы можете попробовать скорректировать поведение -framedrop, чтобы увидеть, помогает ли это уменьшить отставание:
  1. ffplay -framedrop 0 -rtsp_transport udp -analyzeduration 0 -probesize 32 -синхронизация видео rtsp://192.168.1.120:554/live/1_0

4. Условия и сетевые условия

У нихUdpтранспорт может быть не идеальным в сети с высокой задержкой или нестабильной. UDP не гарантирует доставку пакетов, что может привести к задержкам и буферным задержкам на стороне клиента. Хотя UDP может уменьшить задержку в идеальных сетевых условиях, это часто вызывает больше проблем, когда есть сетевая нестабильность или перегрузка.

Решение: тестируйте со стабильной и менее перегруженной сетью или вернитесь кТкпВаша сеть имеет высокий джиттер или потерю пакетов.

5. Перегрузка декодера

Если-flags Low_delayФлаг используется вместе с большими видеопотоками или более высокими разрешениями, это может привести к перегрузке декодером, где FFplay пытается расшифровать кадры слишком быстро, что может привести к большим задержкам обработки.

РешениеУменьшить разрешение видео, чтобы облегчить нагрузку на декодер или выключить флаги с низкой задержкой, если это вызывает проблемы:
  1. ffplay -rtsp_transport udp -analyzeduration 0 -probesize 32 -sync video -an rtsp://192.168.1.120:554/live/1_0

6. Чрезмерный анализ и зондирование

Флаги-анализированная 0и-размер 32предназначены для ограничения количества времени, которое FFplay тратит на анализ потока и размера первоначального пакетного зонда, что должно ускорить запуск. Однако, если эти значения слишком ограничительны, это может заставить FFplay работать с неполной информацией, что приводит к задержкам синхронизации или увеличению общей задержки при попытке восстановиться от отсутствующих данных.

РешениеУвеличьте:-анализированнаяи-пробезируйтеНемного значения, чтобы позволить FFplay собирать больше данных во время запуска без существенного увеличения задержки:
  1. ffplay -rtsp_transport udp -analyzeduration 5000000 -probesize 5000000 -синхронизация видео rtsp://192.168.1.120:554/live/1_0

7. Режим синхронизации видео

У них-синхронизировать видеоFFplay говорит точно синхронизировать видеокадры, что может вызвать задержки, когда ему нужно ждать следующего кадра. Если частота кадров кодера не соответствует ожиданиям FFplay синхронизации, это может привести к ненужным задержкам.

РешениеВы можете экспериментировать с синхронизацией:АудиоилиВременная меткаВместо видео:
  1. ffplay -rtsp_transport udp -analyzeduration 0 -probesize 32 -синхронизация аудио rtsp://192.168.1.120:554/live/1_0
В качестве альтернативы, удаление флага -синхронизации может помочь:
  1. ffplay -rtsp_transport udp -analyzeduration 0 -probesize 32 rtsp://192.168.1.120:554/live/1_0

Заключение:

Чтобы уменьшить задержку, экспериментировать с балансировкой буферной стратегии, транспортного протокола и настроек декодирования. UDP обычно предлагает более низкую задержку, но требует стабильной сети, в то время как TCP может быть более надежным, если качество сети непоследовательно. Настройка размеров буфера, поведения зондирования и настроек падения кадра также может помочь смягчить чрезмерную задержку. Сохраняйте различные конфигурации, чтобы найти оптимальную настройку для вашего конкретного варианта использования.
    • Related Articles

    • FAQ: Тест задержки кодера

      Тест на задержку RTSP Stream Как мы можем получить более низкую задержку через VLC при воспроизведении видео на вашем iPad? Как мы можем провести тест на задержку между кодером и декодером? Как мы можем провести тест на задержку кодека, играя поток ...
    • FAQ: ONVIF для кодировщика

      Совместим ли ваш кодер с профилем ONVIF T? Абсолютно, наш кодер полностью поддерживает ONVIF Profile T и ONVIF Profile S, обеспечивая плавную совместимость и функциональность с широким спектром устройств и систем, предлагая комплексную оперативную ...
    • FAQ: Аудио кодировщика

      Аудиовход Каковы варианты аудиоввода доступны для кодеров HDMI? Кодеры HDMI обычно предлагают три варианта аудиоввода, включая: Аудиовход HDMIЭто позволяет кодеру извлекать аудио непосредственно из входного сигнала HDMI, что делает его идеальным для ...
    • FAQ: NVR Hikvision с энкодером

      Как подключить этот кодер к NVR Hikvision? Во-первых, убедитесь, что кодер и NVR (Network Video Recorder) находятся в одном сегменте сети. Это означает, что оба устройства должны иметь IP-адреса в одной подсети для правильной связи. Кнопкой мыши ...
    • FAQ: просмотр записи кодировщика

      Почему я не могу найти или искать записи на SD-карте с помощью моего кодера? Если вы не можете найти или искать записи, сохраненные на SD-карте с помощью кодера, эта проблема часто связана с настройками Даты и времени устройства. Вот ключевые ...