ffprobe -v error -select_streams v:0 -count_packets -show_entries stream=nb_read_packets -of csv=p=0 input.mp4
NOTE:
ffprobe -select_streams v:0 -show_entries stream=nb_frames -of default=noprint_wrappers=1 input.mp4
WARNING: Fast, but often returns N/A, not reliable.
ffprobe -count_frames -select_streams v:0 -show_entries stream=nb_read_frames -of default=nokey=1:noprint_wrappers=1 input.mp4
WARNING: Pretty slow, can take a minute for longer videos.
ffmpeg -i input.mp4 -map 0:v:0 -c copy -f null -
WARNING: Needs to fully decode video once, which is rather slow.