絕對有可能。在ffmpeg的最新版本中,他們添加了-stream_loop標誌,允許您根據需要多次循環輸入。
問題是,如果您不從源重新生成pts,ffmpeg會在第一次循環後丟棄幀(因爲時間戳會突然回退)。爲了避免這種情況,您需要告訴ffmpeg生成pts,以便在循環之間獲得遞增的時間戳。這是通過+ 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 /(幀頻* TB) 「'。如果沒有這些,它會在第一次循環後停止,其餘的幀被丟棄。 – jadkik94 2016-09-05 19:13:10