Какие параметры нужно использовать в ffmpeg для установки повтора и ожидания при загрузке файлов ts из m3u8 (HLS)?

Как можно изменить команду для загрузки HLS-потока с помощью ffmpeg на Windows 7 так, чтобы ffmpeg не пропускал сбойные сегменты и загружал их до конца, а также чтобы сохранять успешные загрузки для дальнейшего использования при возможных сбоях? В интернете предложены решения, которые перезагружают весь фильм целиком, что в данном случае не подходит из-за его большого размера. Возможно ли реализовать такую функциональность с помощью ffmpeg или другим способом, чтобы избежать траты времени на скачивание фильма заново при каждом сбое? Может быть, есть возможность сохранять успешно загруженные ts-сегменты и продолжать закачку с нескаченных частей при следующем запуске программы?
  • 10 июля 2024 г. 8:32
Ответы на вопрос 2
Для установки повтора и ожидания при загрузке файлов ts из m3u8 (HLS) с помощью ffmpeg, вы можете использовать следующие параметры командной строки:

```
ffmpeg -i input.m3u8 -c copy -bsf:a aac_adtstoasc -max_reload 5 -fflags +genpts output.ts
```

Параметры -max_reload и -fflags +genpts позволяют установить максимальное количество попыток повторной загрузки при ошибке и установить правильные временные метки для видео пакетов соответственно.

Чтобы изменить команду для загрузки HLS-потока с учетом сохранения успешно загруженных сегментов, вы можете использовать параметр -copy для копирования видео и аудио данных без перекодирования. 

```
ffmpeg -i input.m3u8 -c copy -avoid_negative_ts make_zero -fflags +genpts output.ts
```

Таким образом, успешно загруженные сегменты будут сохранены в файл output.ts, и вы сможете продолжить закачку с нескаченных частей при следующем запуске программы.
Попробуйте перед -i добавить 
-timeout 10000000 -reconnect 1 -reconnect_at_eof 1 -reconnect_streamed 1 -reconnect_delay_max 2

Чтобы сохранялись промежуточные закачки, предлагаю сохранять выкачанное фрагментами по 2-10сек (зависит от длины сегмента стрима). Потом сделаете 1 конкат для файлов и получите большой фильм. Фильтр -f segment в помощь.
Похожие вопросы