1

I work with FFMpeg and process some .mkv videos that can have more than one videostream. How I can extract frame from other videostream (not from primary)? I want to extract one frame from each videostream using FFMPeg. Any ideas?

  • You may want to look at: [FFmpeg's **Map** guide](https://trac.ffmpeg.org/wiki/Map). You likely want: `ffmpeg -i yourfile.mkv -map 0:1 -c copy output.mkv`. See if that gets the second stream. – VC.One Sep 16 '20 at 17:59
  • Yes, it really works. Many thanks! – Fedor Zhilkin Sep 16 '20 at 19:39

1 Answers1

4

Example input file layout:

  • video #0:0
  • video #0:1
  • video #0:2
  • audio #0:3
  • audio #0:4

Example: Output screenshot from video #0:2

From 30 second timestamp (-ss 30).

Absolute map

ffmpeg -ss 30 -i input.mkv -map 0:2 -frames:v 1 output.jpg

Relative map

Same result as above with this particular input. 0:v:1 is translated as "from input #0 choose video stream #1". Note that ffmpeg starts counting from 0, so video stream #1 is actually the 2nd video stream.

ffmpeg -ss 30 -i input.mkv -map 0:v:1 -frames:v 1 output.jpg

I prefer using this method because you can be lazy and not have to know the actual stream map numbers.

Example: Output a screenshot from each video stream

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

Also see

llogan
  • 121,796
  • 28
  • 232
  • 243