Как в ffmpeg восстановить соединение и продолжить запись?
Добрый день, задача состоит в том, чтобы записывать видео с камеры с flv в mp4, иногда я так понимаю идет какой-то микролаг интернета, и ffmpeg зависает и ничего не выдает, возможно из-за timeout -1
Не знаю как решить проблему, чтобы он пытался восстановить коннект и продолжил запись, а не переписывал файл заново.
Подскажите пожалуйста
Контейнер mp4 не предназначен для записи потокового видео, он будет всегда давать сбой при сбоях в сети передачи данных потокового видео.
Поменяйте целевой контейнер, в вашем случае mp4, например на mkv, а уже после окончания записи конвертируйте в mp4.
mp4 - в вашем случае - это именно контейнер, а не кодек которым кодируются видеоданные - эти понятия следует различать.
mkv - потоковый контейнер и должен продолжить запись даже при глюке источника. При последующем воспроизведение mkv файла будет или чёрный экран, или застывшее изображение, или артефакты в виде рассыпания изображения. Как только принятые из потока данные пойдут без ошибок, то и и при воспроизведение файла mkv будет восстановлен показ. Не нравиться mkv используйте ts.
Либо же уменьшайте выходной поток с камеры и пытайтесь писать в mp4.
Вы пробовали поменять контейнер записи на mkv или ts, ffmpeg при этом продолжает автоматически прекращать запись при глюке источника?
Как я и говорил, это скорее всего не поможет, так оно и есть. При обрыве связи, ffmpeg сразу срабатывает
.on('end', async (t) => {})
Т.е. он даже не пытается подождать или переподключиться
.on('end', async (t) => {}) - это очевидно, что код вашего Node.js сервера, а вам надо
проксировать соединение до вашего ffmeg, с максимально-оптимальной, для вашей линии связи, установкой таймаута, чтобы при обрыве на входе в прокси выход его до ffmeg оставался открытым.