#!/bin/sh
# name of this script: wav2dvd.sh
DIRAS="~/Public"
DIRAS="/srv/vidas/Public"
DEBUG=""
function PARAMETRAI {
echo "reikalingas parametras"
echo "$0 0 - lyrikoje be pakeitimu"
echo "$0 1 - iterpti priekyje eilute: failo pavadinimas"
echo "$0 2 - pakeisti pirma eilute failo pavadinimu"
echo "$0 3 - direktrija i prieki pries pirma eilute"
echo "$0 4 - iterpti priekyje eilute: direktorija - failo pavadinimas"
# exit 1
DEBUG="yes"
TITLE="4"
}
echo "currentDir/*.wav to $DIRAS"
echo
TITLE="$1"
if [ "$#" -ne 1 ]; then
PARAMETRAI
fi
# patikriname ar yra visi lyric.txt
for wav in *.wav; do
file=`basename "$wav" .wav`
if [ ! -e "$file.txt" ]; then
echo "nerastas $file".txt
exit 1
fi
done
# kopijuojame i DIRAS
for wav in *.wav; do
file=`basename "$wav" .wav`
# gale naikiname tuscias eilutes
if [ "$TITLE" -eq "0" ]; then
echo "0 - lyrikoje be pakeitimu"
cat "$file".txt >$DIRAS/tmp.txt
elif [ "$TITLE" -eq "1" ]; then
echo "1 - iterpti priekyje eilute: failo pavadinimas"
echo "$file" | cat - "$file.txt" >$DIRAS/tmp.txt
elif [ "$TITLE" -eq "2" ]; then
echo "2 - pakeisti pirma eilute failo pavadinimu"
{ echo "$file"; tail -n +2 "$file".txt; } >$DIRAS/tmp.txt
elif [ "$TITLE" -eq "3" ]; then
echo "3 - direktrija i prieki pries pirma eilute"
echo "${PWD##*/} - " | tr -d '\n' | tr -d '\r' | cat - "$file.txt" >$DIRAS/tmp.txt
elif [ "$TITLE" -eq "4" ]; then
echo "4 - iterpti priekyje eilute: direktorija - failo pavadinimas"
{ echo "${PWD##*/} - " | tr -d '\n' | tr -d '\r'; echo "$file"; cat "$file".txt; } >$DIRAS/tmp.txt
else
PARAMETRAI
exit
fi
# gal jau buvome suformave
# if [ DEBUG -ne "yes" || ! -e "$DIRAS/$wav" ]; then
# echo sox "$wav" -r 48000 "$DIRAS/$wav"
# sox "$wav" -r 48000 "$DIRAS/$wav"
if [ ! -e "$DIRAS/$wav" ]; then
ln "$wav" "$DIRAS/$wav"
fi
done
cd $DIRAS
for wav in *.wav; do
file=`basename "$wav" .wav`
# lines in screen (68 in line font=16)
inscreen=29
eiluciu=$(cat tmp.txt | wc -l)
kadru=$((3*inscreen))
if [ $eiluciu -le $kadru ]; then
cat tmp.txt | expand | col -b | cat -s | sed '/^$/N;s/[\r\n]/ /g' | grep -v '^$' | fold -s -w68 >"$file".txt
else # stulpelis i ilga eilute
{ head -n 1 tmp.txt; tail -n +2 tmp.txt | expand | col -b | cat -s | sed '/^$/!s/^/>/' | sed '/^$/d; :loop y/\n/ /; N; /\n$/! b loop; s/ */ /g; s/^ //' | sed '/^$/!s/^/ /' | grep -v '^$' | fold -s -w68; } >"$file".txt
fi
eiluciu=$(cat "$file.txt" | wc -l)
kadru=$((eiluciu-inscreen+1))
num=1
head -n $inscreen "$file.txt" >"$file"001.txt
if [ $kadru -gt 0 ]; then
while [ $kadru -gt $num ]; do
((num++))
ext=$(printf "%03d" $num)
{ head -n 1 "$file".txt; head -n $((inscreen+num-1)) "$file".txt | tail -n $((inscreen-1)) - ; } >"$DIRAS/$file$ext".txt
done
((num++))
ext=$(printf "%03d" $num)
{ head -n 1 "$file".txt; tail -n $((inscreen-1)) "$file".txt; } >"$DIRAS/$file$ext".txt
else
kadru=1
fi
for ((i=1; i<=$num; i++)); do
ext=$(printf "%03d" $i)
{ echo -n ">>>> "; head -n 1 "$file"$ext.txt; head -n $inscreen "$file"$ext.txt | tail -n $((inscreen-1)); } | convert -background black -size 700x576 -font Courier -pointsize 16 -weight Bold -fill white -splice 8x -gravity west caption:@- "$file"$ext.jpg
done
duration=$(ffmpeg -i "$wav" 2>&1 | grep "Duration" | cut -d ' ' -f4 | sed s/,//)
if [ $num -eq 1 ]; then
ffmpeg -loop 1 -i "$file"001.jpg -target pal-dvd -qscale:v 24 -pix_fmt yuv420p -g 100 -an -y -t $duration "$file".m2v
else
sekundziu=$(echo $duration | awk -F: '{ print ($1*3600)+($2*60)+$3 }'); sekundziu=${sekundziu%%.*}
# kiek sekundziu skirsime vienai eilutei.
num=$((sekundziu/eiluciu)); num=${num%%.*}
if [ "$num" -le 1 ]; then
num=1
fi
# prasukami ekranai
ffmpeg -framerate $kadru/$((num*kadru)) -i "$file"%03d.jpg -target pal-dvd -qscale:v 24 -pix_fmt yuv420p -g 100 -an -y "$file"001.m2v
sekundziu=$((sekundziu-(num*kadru)))
# paskutinis ekranas trumpesnis, negu pirmas
num=$((sekundziu/3)); num=${num%%.*}
duration="00:""$(printf "%02d" $((num/60)))":"$(printf "%02d" $((num%60)))"
ffmpeg -loop 1 -i "$file"$(printf "%03d" $kadru).jpg -target pal-dvd -qscale:v 24 -pix_fmt yuv420p -g 100 -an -y -t $duration "$file"999.m2v
# likutis atitenka pirmam ekranui
num=$((sekundziu-num))
duration="00:""$(printf "%02d" $((num/60)))":"$(printf "%02d" $((num%60)))"."50"
ffmpeg -loop 1 -i "$file"001.jpg -target pal-dvd -qscale:v 24 -pix_fmt yuv420p -g 100 -an -y -t $duration "$file"000.m2v
ffmpeg -i "concat:${file}000.m2v|${file}001.m2v|${file}999.m2v" -f mpeg -c copy "$file".m2v
fi
mencoder "$file".m2v -audiofile "$wav" -oac copy -ovc lavc -o "$file".mpg
done
echo "baigta"
exit
# ffmpeg -t $duration -vcodec copy -acodec copy -i $input $output
No comments:
Post a Comment