ffmpeg - 來自不同部分的視訊影像並遞增編號

ffmpeg - 來自不同部分的視訊影像並遞增編號

我正在使用 ffmpeg 從影片中提取靜態圖像。從給定時間開始,在給定持續時間內使用 -ss 和 -t 參數。

ffmpeg -ss 00:10:01 -t 2 -i /Volumes/OO_8/VideoSource.mkv -qscale:v 2 -start_number  /Users/Olivier/Pictures/ScreenCaptures/ViewsOfNature-%4d.jpeg

(我先從時間戳記/持續時間開始,以便 ffmpeg 在該點開始解復用。)

但是,我想使用幾個起點(例如,在 00:01:12 中,提取圖像 2 秒;在 00:11:00 分鐘中,提取圖像 4 秒;等等)我可以做手動執行此操作,替換時間戳和持續時間,並每次移動輸出影像,但理想情況下我想一次輸入時間戳和持續時間,而不是覆蓋輸出影像。有沒有辦法做到這一點?也許使用帶有時間戳/持續時間的外部文件?

我對此很陌生,並且更喜歡僅使用 ffmpeg,而不是使用 bash。

答案1

我沒有找到一種方法可以輕鬆地使用 ffmpeg 做到這一點。有一個分段復用器,但您無法設定分段的持續時間。

沒有什麼可以阻止你這樣做,我相信這相當簡單。只需建立一個文字文件,其中包含以逗號分隔的起點和持續時間清單:

$ cat split.txt
00:01:05,5
00:06:10,2
00:08:25,1

然後在 Bash 中:

count=1
while read -r -d ',' start duration; do
  ffmpeg -ss "$start" -i input.mp4 -t "$duration" "$count-output-%04d.jpg"
  (( count++ ))
done < split.txt

這將建立以唯一編號(1、2、3…)開頭的輸出檔。

相關內容