Counting video frames can be useful in various scenarios, such as video editing, quality analysis, or determining frame rates.
FFmpeg, a popular open-source tool for handling multimedia files, provides an easy way to count video frames.
This article will walk you through how to use FFmpeg on Linux to count video frames.
Installing FFmpeg in Linux
FFmpeg installed on your Linux system, if you don’t have it installed, use the following command to install FFmpeg.
sudo apt install ffmpeg [On Debian, Ubuntu and Mint] sudo yum install ffmpeg [On RHEL/CentOS/Fedora and Rocky/AlmaLinux] sudo emerge -a sys-apps/ffmpeg [On Gentoo Linux] sudo apk add ffmpeg [On Alpine Linux] sudo pacman -S ffmpeg [On Arch Linux] sudo zypper install ffmpeg [On OpenSUSE] sudo pkg install ffmpeg [On FreeBSD]
Using FFmpeg to Count Video Frames
Before running FFmpeg, make sure you know the exact path to your video file, which could be in your Downloads folder, Videos directory, or another location.
To count frames in a video, use the following command:
ffmpeg -i video.mp4 -map 0:v:0 -c copy -f null -
Explanation of the Command:
ffmpeg
: Runs the FFmpeg program.-i video.mp4
: Specifies the input video file.-map 0:v:0
: Maps the first video stream (the main video).-c copy
: Copies the video codec without re-encoding (faster processing).-f null -
: Sends the output to a null sink (discards the output).
FFmpeg will display output in the terminal, including statistics for each frame it processes. Near the end of the output, look for a line showing the number of frames processed.
frame= 4926 fps=0.0 q=-1.0 Lsize=N/A time=00:03:16.96 bitrate=N/A speed=1.97e+04x
The frame
value represents the total number of frames in the video. For example, if it shows frame= 4926
, this means your video has 4926
frames.
If you want to save the frame count result to a text file, use the grep command to filter only the frame information and redirect it to a file.
ffmpeg -i video.mp4 -map 0:v:0 -c copy -f null - 2>&1 | grep "frame=" > frame_count.txt
Open the frame_count.txt
file to see the total frame count.
cat frame_count.txt
Sample Output:
frame= 4926 fps=0.0 q=-1.0 Lsize=N/A time=00:03:16.96 bitrate=N/A speed=2.15e+04x
Using FFprobe to Count Video Frames
FFprobe, another tool within the FFmpeg suite, can directly extract information about the frames without decoding the video. It’s often faster than using FFmpeg for counting frames.
To count frames with ffprobe, use the following command:
ffprobe -v error -count_frames -select_streams v:0 -show_entries stream=nb_read_frames -of csv=p=0 video.mp4
This command will output the total frame count as a single number.
4926
Conclusion
Counting frames in a video is easy with FFmpeg on Linux, and there are a few different ways to do it. The most direct way is to use the -f null -
command with FFmpeg, but you can also use FFprobe for a quicker result.