Определенно возможно. В последних версиях ffmpeg они добавили флаг -stream_loop, который позволяет вам циклически вводить ввод столько раз, сколько требуется.
Получено, что если вы не регенерируете pts из источника, ffmpeg будет отбрасывать кадры после первого цикла (так как временная метка будет внезапно возвращаться во времени). Чтобы этого избежать, вам нужно сообщить ffmpeg о генерации очков, чтобы вы увеличивали метку времени между циклами. Это делается с помощью вызова + genpts (он должен быть до -i arg).
Вот пример вызова ffmpeg (замените $ F на ваш входной файл). В этом примере генерируются два выходных потока, а аргумент -stream_loop -1 сообщает ffmpeg о непрерывном цикле ввода. Вывод в этом случае предназначен для аналогичного потокового вещания (MetaCDN), в соответствии с вашими требованиями.
ffmpeg -threads 2 -re -fflags +genpts -stream_loop -1 -i $F \
-s 640x360 -ac 2 -f flv -vcodec libx264 -profile:v baseline -b:v 600k -maxrate 600k -bufsize 600k -r 24 -ar 44100 -g 48 -c:a libfdk_aac -b:a 64k "rtmp://publish.live.metacdn.com/2050C7/dfsdfsd/lowquality_664?hello&adbe-live-event=lowquality_" \
-s 1920x1080 -ac 2 -f flv -vcodec libx264 -profile:v baseline -b:v 2000k -maxrate 2000k -bufsize 2000k -r 24 -ar 44100 -g 48 -c:a libfdk_aac -b:a 64k "rtmp://publish.live.metacdn.com/2050C7/dfsdfsd/highquality_2064?mate&adbe-live-event=highquality_"
я должен был использовать эти аргументы, чтобы заставить его работать правильно: '-f lavfi -re -fflags + genpts -i«фильм = GleamingThatBrownbutterfly.webm: петля = 0, setpts = N/(frame_rate * TB) «'. Без них он останавливался после первого цикла, а остальные кадры были сброшены. – jadkik94