ubuntu: ลองแปลงไฟล์ภาพเป็นวิดีโอ
Submitted by wd on Thu, 2007-01-11 08:34
ลองทำสคริปต์แปลงไฟล์ภาพเป็นวิดีโอ
วิธีใช้คือเข้าไปในไดเรคทอรี่ของไฟล์ภาพ แล้วสั่งรันโปรแกรมตรง ๆ
$ sudo aptitude install imagemagick mjpegtools
$ vi d.mkvid
#!/bin/bash
#REQUIRED PACKAGE: imagemagick mjpegtools
#VIDEO VARIABLE
SCREEN="720x576" #DVD-PAL=720x576 DVD-NTSC=720x480
BACKGROUND="black"
FRAMERATE="25" #PAL=25 NTSC=29.97
LOOP="75" #STILL IMAGE FOR 3 SEC x FRAMERATE
FADEFRAME="50" #FADE FOR 2 SEC x FRAMERATE
#PROGRAM VARIABLE
MAINFILE="main.m2v"
WORKDIR="temp"
IMGSKEL="[Jj][Pp][Gg]"
#-------------FUNCTION----------------
#MAKING AVI FROM JPG
fMakeAvi() {
echo -n "Make AVI $1 ... "
jpeg2yuv -v 0 -f $FRAMERATE -j $1 -I p -n 1 -l $LOOP | yuv2lav -o $1.avi
}
#MAKE CROSS FADE BETWEEN AVI FRAME
fMakeFade() {
echo -n "Make fade $1 $2 ... "
ypipe -v 0 "lav2yuv -v 0 -o -$FADEFRAME $1.avi" "lav2yuv -v 0 -f $FADEFRAME $2.avi" | transist.flt -o 0 -O 255 -d $FADEFRAME | yuv2lav -v 0 -o $1$2.avi
}
#MAKING M2V FROM AVI
fMakeM2V() {
echo -n "Make M2V $1 ... "
lav2yuv -v 0 $1.avi | mpeg2enc -v 0 -o $1.m2v
}
#-------------BEGIN MAIN--------------
#DETERMINE FIRST FILE
FIRSTJPG=`echo *$IMGSKEL | cut -d \ -f 1`
#CREATE WORKING DIRECTORY
if [ -d $WORKDIR ]; then
echo "Directory $WORKDIR existed, exit 1"
exit 1;
fi
mkdir $WORKDIR
#MAKE JPG FILE SUITABLE FOR VIDEO BY USING imagemagick:montage
for i in *$IMGSKEL; do
montage -geometry $SCREEN -background $BACKGROUND -quality 100 $i $WORKDIR/$i
done
#CHANGE TO WORKING DIRECTORY
pushd $WORKDIR
#MAKE AVI FOR FIRST JPG FILE
fMakeAvi $FIRSTJPG
#MAKE M2V FROM FIRST AVI FILE
fMakeM2V $FIRSTJPG
#ADD FIRST M2V TO MAIN
cat $FIRSTJPG.m2v > $MAINFILE
#DELETE FIRST M2V
rm $FIRSTJPG.m2v
echo ""
LASTFILE=$FIRSTJPG
for i in *$IMGSKEL ; do
if [ $i != $FIRSTJPG ] ; then
#MAKE AVI FOR THIS FILE
fMakeAvi $i
#MAKE FADE BETWEEN LAST FILE AND THIS FILE
fMakeFade $LASTFILE $i
#MAKE M2V FOR THIS FILE
fMakeM2V $i
#MAKE M2V FOR FADE FILE
fMakeM2V $LASTFILE$i
#KEEP AVI OF THIS FILE
#DELETE AVI OF LAST FILE
rm $LASTFILE.avi
#DELETE AVI OF FADE FILE
rm $LASTFILE$i.avi
#ADD M2V TO MAIN MPEG
cat $LASTFILE$i.m2v >> $MAINFILE #ADD FADE
cat $i.m2v >> $MAINFILE #ADD THIS FILE
#DELETE M2V OF THIS FILE
rm $i.m2v
#DELETE M2V OF FADE FILE
rm $LASTFILE$i.m2v
#REASSIGN LAST FILE TO THIS FILE
LASTFILE=$i
echo ""
fi ;
done
#DELETE AVI OF LAST FILE
rm $LASTFILE.avi
mv $MAINFILE ..
popd
#rm -rf $WORKDIR$ chmod 755 d.mkvid
ใช้งานได้แล้ว แต่ยังมีข้อเสียอยู่คือ แปลงเป็น avi โดยไม่จำเป็น
ขอศึกษาต่ออีกหน่อยครับ
ท่านใดพอมีความรู้ ช่วยแนะนำด้วยนะครับ :)
อ้างอิง
- Printer-friendly version
- Log in or register to post comments
- 6172 reads







Recent comments