ffmpeg -pattern_type glob - 沒有以正確的順序載入文件
我有一個兩難境地.. 我已經有一段時間的腳本,每隔幾分鐘從網路攝像頭下載圖片。命名約定就可以
new_image((len(files(dir))+1) + '.jpg')
了,這一切都很好..直到今天..我有一個 Python 腳本,它根據創建日期載入圖像並渲染它們,我獲取 OpenGL 數據並將其轉儲到電影中,這並不難,一切都好.. 除了現在我有幾千張圖片並且以這種方式繼續下去是非常無效的(即使它很酷,因為我可以建構自己的 GUI 和覆蓋等).. 無論如何,我正在使用 ffmpeg 將圖像組合成幻燈片,如下所示:
ffmpeg -f image2 -r 25 -pattern_type glob -i '*.jpg' -qscale 3 -s 1920x1080 -c:v wmv1 video.wmv
ffmpeg 工作正常,除了
-pattern_type glob
按命名順序獲取圖像不起作用,因為文件獲取的方式相似,如果不相同ls
,看起來像:user@host:/storage/photos$ ls 0.jpg 1362.jpg 1724.jpg 2086.jpg 2448.jpg 280.jpg 3171.jpg 3533.jpg 3896.jpg 4257.jpg 4619.jpg 4981.jpg 5342.jpg 5704.jpg 6066.jpg 650.jpg 1000.jpg 1363.jpg 1725.jpg 2087.jpg 2449.jpg 2810.jpg 3172.jpg 3534.jpg 3897.jpg 4258.jpg 461.jpg 4982.jpg 5343.jpg 5705.jpg 6067.jpg 651.jpg
0, 1000, 1, 2000, 2
…這是邏輯,ls
因此圖像序列(遊戲中時光倒流)將全部完成..關於如何使用 ffmpeg 以更有序的方式載入圖像的任何想法?
ffmpeg concat 相同的文件類型
您可以使用這樣的命令以任何您想要的方式連接文件列表:
ffmpeg -f concat -i <( for f in *.wav; do echo "file '$(pwd)/$f'"; done ) \ output.wav
僅當您要連接的文件都是相同的編解碼器時,上述方法才有效。例如,它們都必須是 .wav 或 .mpg。
注意:您需要 ffmpeg v1.1 或更高版本才能使用 concat demuxer,您可以在ffmpeg 網站上閱讀有關上述範例以及如何使用此技術連接不同編解碼器的更多資訊。
ffmpeg 使用 printf 格式化程序
Ffmpeg 還可以使用 printf 格式化程序(例如
%d
. 這匹配從 0 開始並按順序向上的數字。如果數字的結構是這樣的,000 - 099,你可以使用這個格式化程序,%03d
這意味著一系列 3 位數字,用零填充。所以你可以做這樣的事情:
ffmpeg -r 25 -i %d.png -qscale 3 -s 1920x1080 -c:v wmv1 video.wmv
以上對我來說不太適用,
ffmpeg
抱怨這個選項-c:v
。我只是省略了那個選項,這個版本的命令按預期工作。ffmpeg -r 25 -i %d.png -qscale 3 -s 1920x1080 video.wmv