问题描述
我与FFMpeg合作,处理一些.mkv视频,这些视频可能具有多个视频流。如何从其他视频流(而不是主要视频流)提取帧?我想使用FFMPeg从每个视频流中提取一帧。有什么想法吗?
解决方法
示例输入文件布局:
- 视频#0:0
- 视频#0:1
- 视频#0:2
- 音频#0:3
- 音频#0:4
示例:从视频#0:2输出截图
从30秒时间戳(-ss 30
)开始。
绝对图
ffmpeg -ss 30 -i input.mkv -map 0:2 -frames:v 1 output.jpg
相对地图
对于此特定输入,结果与上述相同。 0:v:1
被翻译为“从输入#0选择视频流#1”。 请注意,ffmpeg
从0开始计数,因此视频流#1实际上是第二个视频流。
ffmpeg -ss 30 -i input.mkv -map 0:v:1 -frames:v 1 output.jpg
我更喜欢使用这种方法,因为您可能会很懒,并且不必知道实际的流图编号。
示例:输出每个视频流的屏幕截图
ffmpeg -ss 30 -i input.mkv -map 0:v:0 -frames:v 1 output0.jpg -map 0:v:1 -frames:v 1 output1.jpg -map 0:v:2 -frames:v 1 output2.jpg