#!/bin/bash

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 --timeout 120 -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 ffmpeg pass
ffmpeg -i $WAVFILE \
    -f rawvideo \
    -pix_fmt rgb32 \
    -s:v ${WIDTH}x${HEIGHT} \
    -r $FPS \
    -i $RAWFILE \
    -c:v libx264 \
    -r $FPS \
    -acodec aac -b:a 192k \
    $MP4FILE

echo Done.
