63 lines
1.2 KiB
Bash
63 lines
1.2 KiB
Bash
|
set -e
|
||
|
|
||
|
INFILE="$1"
|
||
|
# additional params can be input to the extraction
|
||
|
# for time or seek
|
||
|
shift
|
||
|
|
||
|
mkdir -p temp
|
||
|
|
||
|
ffmpeg \
|
||
|
-i "$INFILE" \
|
||
|
-r 60000/1001 \
|
||
|
-vf 'scale=256:-2' \
|
||
|
-an \
|
||
|
"$@" \
|
||
|
-y "temp/$INFILE-%04d.png"
|
||
|
|
||
|
ffmpeg \
|
||
|
-i "$INFILE" \
|
||
|
-vn \
|
||
|
-ac 1 \
|
||
|
-ar 15734 \
|
||
|
-acodec pcm_u8 \
|
||
|
"$@" \
|
||
|
-y "temp/$INFILE-audio.wav" || echo no audio
|
||
|
|
||
|
for frame in "temp/$INFILE-"[0-9][0-9][0-9][0-9].png
|
||
|
do
|
||
|
n="${frame#temp/$INFILE-}"
|
||
|
n="${n%.png}"
|
||
|
out="temp/$INFILE-dither-${n}"
|
||
|
last="${n:0-1}"
|
||
|
node ../dither-image.js "$frame" "$out" &
|
||
|
if (( last == 9 ))
|
||
|
then
|
||
|
echo "frame $n"
|
||
|
wait
|
||
|
fi
|
||
|
done
|
||
|
wait
|
||
|
|
||
|
if [ -f "temp/$INFILE-audio.wav" ]
|
||
|
then
|
||
|
ffmpeg \
|
||
|
-r 60000/1001 \
|
||
|
-i "temp/$INFILE-dither-%04d.png" \
|
||
|
-i "temp/$INFILE-audio.wav" \
|
||
|
-ac 2 \
|
||
|
-ar 48000 \
|
||
|
-vf 'pad=w=534' \
|
||
|
-pix_fmt yuv420p \
|
||
|
-movflags +faststart \
|
||
|
-y "$INFILE-dither.mp4"
|
||
|
else
|
||
|
ffmpeg \
|
||
|
-r 60000/1001 \
|
||
|
-i "temp/$INFILE-dither-%04d.png" \
|
||
|
-vf 'pad=w=534' \
|
||
|
-pix_fmt yuv420p \
|
||
|
-movflags +faststart \
|
||
|
-y "$INFILE-dither.mp4"
|
||
|
fi
|