Scripted fade in/out of audio
dgmm
freebsd01 at dgmm.net
Tue Jan 30 01:55:26 UTC 2007
All,
Are there any programs out there which can do fade in and out of audio during
a copy or encode, under control of a shell script or similar?
I have a large number of short video clips which need to be re-encoded into
one long stream with a one second fade-in at the start of each clip and a one
second fade out at the end of each clip.
So far, I've got a script which separates audio and video and creates the
fade-in/out for the video, re-encodes it and muxes the audio back in.
(I'm sure the script as is could be improved, advice welcome :-)
Would this be better on another list? If so, which?
#! /bin/sh
# fader 0.1 - 29/01/07 - Dave Gallagher
# Auto add 1sec fade-in/fade-out to avi clips
# No error checking, files hard coded while testing
clip="/home3/billsvids/MaxQuality/CanadaEdits/101Greenland.avi"
pictype=png
frames=`tcprobe -i "${clip}" | grep V: | sed -e 's/\[avi.*es=//' -e 's/,.*//'`
vbitrate=`mplayer -identify -frames 0 "${clip}" |\
grep ID_VIDEO_BITRATE |\
sed -e 's/.*RATE=//'`
vbitrate=$(($vbitrate / 1000))
echo Frames="${frames}"
echo Video Bitrate="${vbitrate}kbps"
echo "------------------------------"
echo " Extracting audio"
echo "------------------------------"
mplayer -msglevel all=-1 -benchmark -vc null -vo null -dumpaudio \
-dumpfile zaudio.mp3 "${clip}"
echo "---------------------------------------"
echo " extract frames"
echo "---------------------------------------"
if [ $pictype = jpg ] ; then
echo Doing JPeG ; ptype="jpeg:quality=100"
else
echo Doing PNG ; ptype="png:z=0"
fi
mplayer -benchmark -nosound -vo "${ptype}" "${clip}"
#process frames to fade up from 0% brightness to normal
count=1
while [ $count -le 25 ] ; do
sframe=`echo $count | awk '{printf("%8d",$0)}' | sed 's/ /0/g'`.${pictype}
fadein=$(($count * 4))
#Might as well count backwards from the end too and fade out
end=$(($frames - $count))
eframe=`echo $end | awk '{printf("%8d",$0)}' | sed 's/ /0/g'`.${pictype}
echo $sframe $eframe $fadein
mogrify $sframe -modulate $fadein $sframe
mogrify $eframe -modulate $fadein $eframe
count=$(($count + 1))
done
# VERY HIGH QUALITY
video="-ovc lavc -lavcopts vcodec=mpeg4:mbd=2:mv0:\
trell:v4mv:cbp:last_pred=3:predia=2:dia=2:vmax_b_frames=2:\
vb_strategy=1:precmp=2:cmp=2:subcmp=2:preme=2:qns=2"
# VERY FAST
video="-ovc lavc -lavcopts vcodec=mpeg4:mbd=2"
bitrate="vbitrate=1200"
for j in "turbo:vpass=1 -nosound" "vpass=2 ${audio}" ; do
mencoder -force-avi-aspect 4:3 -oac copy -audiofile zaudio.mp3 \
-mf fps=25:type=$pictype "mf://*.$pictype" \
${video}:${bitrate}:${j} -ffourcc DX50 -o z1video.avi
done
if [ $pictype = jpg ] ; then
rm *.jpg
else
rm *.png
fi
rm zaudio.mp3
mplayer z1video.avi
--
Dave
More information about the freebsd-multimedia
mailing list