Получение av_interleaved_write_frame(): Пробитый канал через некоторое время

Вопрос или проблема

Каждый раз, когда я пытаюсь транслировать С аудио, независимо от источника ввода, я получаю “av_interleaved_write_frame(): Broken pipe”. Ошибка возникает не мгновенно, а время от времени. Я пытаюсь использовать FFMPEG из AutoHotkey, чтобы, когда пользователи запускают AHK Script, их веб-камера со звуком автоматически транслировалась на центральный RTSP-Proxy.

Версия: ffmpeg-2022-11-23-git-c8e9cc8d20-full_build

ОС: Win 10 64bit 22H2 19045.2251

Для тестирования я пытался стримить в локальной сети с одного ПК на другой, напрямую подключенных через Ethernet к одному свитчу, так что проблем быть не должно.

Я попробовал следующую команду, выполненную из .BAT, в командной строке и из командной строки, встроенной в Autohotkey.

ffmpeg -loglevel 56 -hide_banner -f dshow -i audio="VoiceMeeter Output (VB-Audio VoiceMeeter VAIO)" -rtsp_transport tcp rtsp://10.18.7.103:8554/live

Трейслог: https://pastebin.com/ABV049BT

Я думаю, эта ошибка возникает потому, что RTSP-сервер, на который вы стримите, закрыл соединение, например, из-за тайм-аута.

Я однажды сталкивался с этой проблемой. В моем случае, если поток останавливался на некоторое время, сервер закрывал соединение. Чтобы этого избежать, можно передавать пакеты с тишиной вместо полного отсутствия передачи.

.

Ответ или решение

Решение проблемы с ошибкой "av_interleaved_write_frame(): Broken Pipe" при потоковой передаче с помощью FFMPEG

Проблема, с которой вы столкнулись, связана с использованием FFMPEG для потоковой передачи аудио и видео через RTSP. Ошибка "av_interleaved_write_frame(): Broken Pipe" часто возникает, когда RTSP-сервер, к которому вы подключаетесь, неожиданно закрывает соединение. Это может происходить по различным причинам, включая тайм-ауты или потерю пакетов в сети.

Анализ проблемы:

  1. Программное окружение:

    • Вы используете FFMPEG версии от 23 ноября 2022 года на системе Windows 10 64bit версии 22H2.
    • Поток передается с локального устройства на другой компьютер через Ethernet-соединение.
  2. Технические детали:

    • FFMPEG выполняет команду для потоковой передачи аудио через RTSP-протокол, но возникает ошибка с "сломанной трубой" спустя некоторое время после начала передачи.
  3. Потенциальные причины:

    • RTSP-сервер может закрывать соединение из-за отсутствия аудиопотока (паузы в передаче).
    • Проблемы с сетью или конфигурацией сети, которые приводят к задержкам и потере пакетов.
    • Использование несоответствующего аудиокодека или формата, который не поддерживается целевым RTSP-сервером.

Рекомендации по решению:

  1. Передача заглушек в аудиопотоке:

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

    • Проверьте настройки аудиокодека в вашей команде. Возможно, стоит сменить кодек на более стабильный или совместимый с RTSP-сервером.
    • Используйте флаг -re в FFMPEG для более "естественной" потоковой передачи, симулируя скорость реального времени.
  3. Тестирование сетевой инфраструктуры:

    • Убедитесь, что сеть не страдает от перегрузок или сбоев, которые могут вызывать потерю соединения.
    • Проверка локальных параметров сетевой карты и проводимости Ethernet-кабеля может устранить аппаратные сбои.
  4. Улучшение стабильности RTSP-сервера:

    • Как временное решение, попробуйте увеличить таймаут на RTSP-сервере, если это возможно. Это позволить повысить устойчивость соединения.
    • Применение более надежного RTSP-прокси или использование другого сервера может улучшить параметры связи.
  5. Проверка логов:

    • Воспользуйтесь подробным логированием FFMPEG -report для анализа проблемы. Это может предоставить больше информации о том, в какой момент и по какой причине возникает сбой.

Заключение

Необходимо уделить внимание не только исправлению проблем с самим кодеком и FFMPEG, но и исследованию влияния сетевой инфраструктуры и конфигураций RTSP-сервера. Исправление или минимизация пауз в аудиопотоке позволит избежать преждевременного разрыва соединения сервером.

Оцените материал
Добавить комментарий

Капча загружается...