By taking the progress bar from this link, I create a simple script that shows the actual frame of the video being encoded and shows a progress bar at the bottom of it... at the same time that ffmpeg encodes the video, of course.

First, we have to get duration, width and height from the video, to create the bar. But, as color filter can't get this information from the file, we have to get them first with ffprobe. Then, we use them with ffmpeg.
#!/bin/bash
video_duration=`ffprobe -v quiet -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$1"`
video_width=`ffprobe -v quiet -select_streams v -show_entries stream=width -of csv=p=0:s=x "$1"`
video_height=`ffprobe -v quiet -select_streams v -show_entries stream=height -of csv=p=0:s=x "$1"`
five_percent=`expr $video_height / 20`
#echo $video_duration
#echo $video_width
#echo $video_height
#echo $five_percent
ffmpeg -i "$1" -filter_complex "color=c=red:s='$video_width'x$five_percent[bar];[0][bar]overlay=-w+(w/$video_duration)*t:H-h:shortest=1[bar]" "$2" -map [bar] -f xv display
Then, use script as:
sh encode_with_bar.sh video_in.mkv video_out.mp4
Performance: the filter used is very simple... but everything added consumes additional CPU. Testing a 10MB video file in my computer, this is the difference:
- Without script: 14.46 seconds
- With script: 17.05 seconds (18% more)
Yes, almost 20% more. For short videos, it's nice. For larger files, probably it's not a good idea .