@herb_fargus I found that relying on sleep to properly time a 30 second video was getting mixed results so I modified your script a little to crop the video afterward for a more uniform recording length.
It requires that you install ffmpeg beforehand though.
#!/usr/bin/env bash system="$1" emulator="$2" rompath="$3" launch="$4" rom_file="${rompath##*/}" rom="${rom_file%.*}" mediadir="$HOME/RetroPie/roms/$system/images" tmpfile="/tmp/$rom-video.mkv" videofile="$mediadir/$rom-video.mkv" # Create videos folder in system's rom folder if [[ ! -d "$mediadir" ]]; then mkdir -p "$mediadir" dialog --msgbox "$mediadir created!" 20 60 >/dev/tty fi # Launch to record gameplay on RetroArch Systems. if [[ "$launch" =~ retroarch ]]; then eval "$launch" "--record \"$tmpfile\"" & sleep 120 killall retroarch # Crop video to 30 seconds eval "ffmpeg -y -t 30" "-i \"$tmpfile\"" "-acodec copy \"$videofile\"" & exit 1 else dialog --msgbox "Video recording is not supported for this system" 20 60 >/dev/tty fi