簡體   English   中英

使用ffmpeg提取特定幀的列表

[英]Extract list of specific frames using ffmpeg

我正在嘗試在視頻上使用ffmpeg來提取特定幀的列表,用幀號表示。 所以我想說我想從'test_video.mp4'中提取一幀,確切地說幀號為150。 我可以使用以下命令

ffmpeg -i test_video.mp4 -vf "select=gte(n\\, 150)" -vframes 1 ~/test_image.jpg

但是,如果我想確定一個幀列表,如[100, 110, 127, 270, 300]怎么辦? 我一直在看這個頁面( https://ffmpeg.org/ffmpeg-filters.html#select_002c-aselect ),可以看到有很多方法可以根據幀號,時間戳等的奇偶校驗提取多個幀,但是我找不到我需要做的事情的語法。

理想我想提取的命名規則下給出幀列表out_image%03d.jpg其中%03d由給定的幀編號替代,盡管時間戳也將工作。

有沒有辦法做到這一點?

使用

ffmpeg -i in.mp4 -vf select='eq(n\,100)+eq(n\,184)+eq(n\,213)' -vsync 0 frames%d.jpg

FFmpeg主要是定時視頻的處理器,即具有諸如幀速率或采樣率的循環速率的媒體。 它假定輸出應與源相同。 如果提供的框架不合適,除非被告知不重復,否則它會重復。 -vsync 0被添加,在這種情況下,它告訴它抑制重復。

一個非常天真的答案......

#! /bin/sh -e
# framegrab v0.1

frames="$1"
filename="$2"
printf '%s' "$frames" |
sed 's:\[\|\]::g; s:[, ]\+:\n:g' |
xargs printf '%03d\n' |
xargs -IFRAME ffmpeg -i "$filename" -vf "select=eq(n\,FRAME)" -vframes 1 out_imageFRAME.jpg

用你的參數列表調用它:

 framegrab '[100, 110, 127, 270, 300]' test_video.mp4

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM