Definitivamente possibile. Nelle recenti versioni di ffmpeg hanno aggiunto un flag -stream_loop che consente di eseguire il looping dell'input tutte le volte che è necessario.
Il gotcha è che se non si rigenerano i pts dalla sorgente, ffmpeg farà cadere i fotogrammi dopo il primo ciclo (dato che il timestamp tornerà improvvisamente indietro nel tempo). Per evitare ciò, devi dire a ffmpeg di generare i pts in modo da ottenere un timestamp crescente tra i loop. Questo viene fatto con la chiamata + genpts (deve essere prima di -i arg).
Ecco un esempio di chiamata ffmpeg (sostituire $ F con il file di input). Questo esempio genera due flussi di output e l'argomento -stream_loop -1 indica a ffmpeg di eseguire continuamente il loop dell'input. L'output in questo caso è per un assimilato streaming stream simile (MetaCDN), adattato di conseguenza alle tue esigenze.
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_"
fonte
2015-12-15 03:34:02
ho dovuto usare questi argomenti per farlo funzionare correttamente: '-f lavfi -re -fflags + genpts -i "movie = GleamingThatBrownbutterfly.webm: loop = 0, setpts = N/(FRAME_RATE * TB) "'. Senza di essi, si stava fermando dopo il primo ciclo e il resto dei fotogrammi è stato rilasciato. – jadkik94