FFmpeg TCP двухточечная потоковая передача с tee muxer - обрабатывает сетевые отключения
Мы используем FFmpeg для потоковой передачи между двумя компьютерами (двухточечная передача) с использованием TCP. Потоковая передача работает нормально, и мы хотели добавить поддержку двух функций:
- Сохраните поток локально в дополнение к потоковой передаче на удаленный компьютер
- Обрабатывать прерывания сети
Для первого пункта мы начали использовать Tee Muxer, и это решает первую проблему. Однако нам не удалось сохранить соединение во время прерываний сети, поток не восстановится, если сеть отключится более чем на ~10 секунд.
Немного больше технической информации: Потоковая команда ffmpeg:
ffmpeg -f avfoundation -video_size 1280x720 -framerate 30.0 -pixel_format uyvy422 -i "0: 0" -представить очень быстро -c:v libx264 -c:a ac -b: 128k -ac 2 -ar 44100 -pix_fmt yuv420p -b:v 500k -maxrate 500k -bufsize 1000k -sc_threshold 0 -g 60 -keyint_min 60 -af "aresample=async=1:min_hard_comp=0.100000:first_pts=0" -r 30.0 -f tee -map 0 "[onfail= игнорировать]test_new.ts|[е = ФИФО: fifo_format = MPEGTS:drop_pkts_on_overflow=1:attempt_recovery=1:recovery_wait_time=1:recover_any_error=1]? ТСР://[хост]:[порт] тайм-аут =900000000"
Принимающая сторона:
ffmpeg -i tcp: // хост: порт?listen&timeout=900000000&listen_timeout=300000 ...
Через несколько секунд мы получаем в конце потоковой передачи следующую ошибку:
Соединение с tcp://[хост]:[порт]? Timeout = 900000000 не удалось: сеть недоступна
И поток никогда не восстанавливается
Мы хотим, чтобы соединение tcp оставалось активным как можно дольше (мы выбираем 5 минут для тестирования)
Кто-нибудь знает, можно ли это сделать и как?
Спасибо