$filename is handled as a shell variable.
What about
ffmpeg -i clip.mp4 fr1/clip_%d.jpg -hide_banner or
$mp4filename=clip ffmpeg -i ${mp4filename}.mp4 fr1/${mp4filename}_%d.jpg -hide_banner ?
Update: For use with gnu parallel, you can use parallel's -i option:
-i
Normally the command is passed the argument at the end of its command line. With this option, any instances of "{}" in the command are replaced with the argument.
The resulting command line could be as simple as
parallel -i ffmpeg -i {} fr1/{}_%d.jpg -hide_banner -- *.mp4 if you can live with the extension in the output files.
Be aware that you may not actually want to run this in parallel on a traditional hard-disk as the concurrent i/o will slow it down.
Edit: Fixed variable reference as pointed out by @DonHolgo.