FFmpeg生成视频预览缩略图
2019-11-30 02:38:20
1225次阅读
0个评论
方法1:帧间隔
根据输入或N/A某些类型的输入的返回,这可能会花费一些时间(在这种情况下,请参阅基于持续时间的方法)。
获取总video帧数:
该命令将输出一个整数值,例如:
对于上面的示例,帧间隔为 nb_frames / 5 = 18034 / 5 = 3607
最后的ffmpeg命令是:
方法2:持续时间间隔
与上述相同,但持续时间以秒为单位。这也可能需要一段时间,并且报告的持续时间可能无效(例如:如果文件被截断)。
它返回一个真实值,例如:
您的间隔是601 / 5 ≈ 120秒:
根据输入或N/A某些类型的输入的返回,这可能会花费一些时间(在这种情况下,请参阅基于持续时间的方法)。
获取总video帧数:
ffprobe <input> -select_streams v -show_entries stream=nb_frames -of default=nk=1:nw=1 -v quiet
该命令将输出一个整数值,例如:
18034
对于上面的示例,帧间隔为 nb_frames / 5 = 18034 / 5 = 3607
最后的ffmpeg命令是:
ffmpeg -i <input> -filter:v "select=(gte(n\,3607))*not(mod(n\,3607)),tile=2x2" -frames:v 1 -vsync vfr -y tile.png
方法2:持续时间间隔
与上述相同,但持续时间以秒为单位。这也可能需要一段时间,并且报告的持续时间可能无效(例如:如果文件被截断)。
ffprobe <input> -select_streams v -show_entries stream=duration -of default=nk=1:nw=1 -v quiet
它返回一个真实值,例如:
601.133333
您的间隔是601 / 5 ≈ 120秒:
ffmpeg -i <input> -filter:v "select=(gte(t\,120))*(isnan(prev_selected_t)+gte(t-prev_selected_t\,120)),tile=2x2" -frames:v 1 -y tile.png
00