If you have ffprobe
installed:
ffprobe -loglevel quiet -show_streams -show_entries stream=index -of csv <input> | wc -l
This will output one line per stream, and count the number of lines with wc
. You can also filter for video or audio streams by adding -select_streams v
or -select_streams a
, respectively. See the manual for more details.
If you do not have ffprobe
, ffmpeg
can be used too, but in a slightly less robust way (i.e., this may break if the output format changes or something contains the words "Stream #" in the output):
ffmpeg -i <input> 2>&1 | grep "Stream #" | wc -l