#!/bin/bash trap cleanup EXIT set -eux set -o pipefail SWFFILE="$1" MP4FILE="${SWFFILE%.*}.mp4" RAWFILE=$(cat /dev/urandom | tr -dc 'a-zA-Z' | fold -w 32 | head -n 1).raw WAVFILE=$(cat /dev/urandom | tr -dc 'a-zA-Z' | fold -w 32 | head -n 1).wav cleanup() { rm -f $RAWFILE $WAVFILE } # create raw-dump GNASHCMD="dump-gnash -1 -D $RAWFILE@30 -A $WAVFILE $SWFFILE" echo -e Extracting raw file and wav file... OUTPUT="$(exec $GNASHCMD)" # extract parameters WIDTH="$(echo $OUTPUT | grep -o 'WIDTH=[^, }]*' | sed 's/^.*=//')" HEIGHT="$(echo $OUTPUT | grep -o 'HEIGHT=[^, }]*' | sed 's/^.*=//')" FPS="$(echo $OUTPUT | grep -o 'FPS_ACTUAL=[^, }]*' | sed 's/^.*=//')" # combine audio and video to mp4 file with ffmpeg echo Please waiting... ffmpeg -i $WAVFILE \ -f rawvideo \ -pix_fmt rgb32 \ -s:v ${WIDTH}x${HEIGHT} \ -r $FPS \ -i $RAWFILE \ -c:v libx264 \ -r $FPS \ -b:a 16k \ $MP4FILE echo Done.