Если нужно сделать повторный стриминг небольшого файла (или просто сделать большой файл из нескольких повторов маленького), то поможет такая команда:
ffmpeg -re -f lavfi -i "movie=filename=/some/path/input.mp4:loop=0, setpts=N/(FRAME_RATE*TB)" -ar 44100 -f flv rtmp://some.server/app/live
Чуть подробнее:
-reпроцессит входные фреймы так, как если бы это был live stream- формат входного файла
lavfiговорит, что входной файл, это не регулярный файл, устройство или сетевой ресурс, а описание графа фильтра (комплексного) - соответственно аргументом
-iстановится описание графа фильтра: 1.movie- фильтр задаёт источник данных, а его параметрloop=Nзадаёт число повторов, 0 - бесконечное число раз, отличное от нуля - будет сделано именно такое число повторов. 2.setpts- предыдущий фильтр действует принципу KISS: попросили повторять файл - буду, но PTS будет оставаться без модификаций, соответсвенно муксеру это может (и даже, скорее всего, обязательно) показаться неприятным. Соответственно нам нужно пересчитать PTS на основе прошедших (N) кадров, фреймрейта (FRAME_RATE) и time-base входного PTS (TB, про time-base я уже писал)
Дальнейшие опции роли не играют и могут сильно варьироваться. Выходным файлом может быть что угодно. Проблемы могут быть с входными файлами с переменным фреймрейтом, но я таких не видел.
Продублировал как ответы на вопросы на сайта Stack Exchange: