VideoCD
, 15 17 DVD , ( 29" ), ... , ... .
:
VCD - MPEG-1 352x288, 1150kbps 224kbps . (74 - 80)
SVCD - MPEG-2 , 480576. 2600kbps 34 384kbps. 40 55 , .
XVCD, CVCD - DVD ( ). 90 .
: MPlayer, Transcode (
http://theorie.physic.uni-goettingen.de/~ostreich/transcode), MJEG Tools (
http://mjpeg.sourceforge.net), VCDImager (
http://www.vcdimager.org), perl :)
, , ? Divx2VCD
Divx2VCD - , , , VCD:
#!/bin/bash
DIR=`pwd`
TEMPFOLDER=/tmp/divx2vcd-$RANDOM
TEMP_TEMPLATE=/tmp/tcm-template-$RANDOM
# 74 (650) => CDSIZE=735
# 80 (700) => CDSIZE=795
# , , ,
#
VIDEORATE=1150
AUDIORATE=224
if [ $# -eq 0 ]; then
echo "Usage:"
echo " divx2vcd "
exit 1
fi
FILE=$1
if [ "$1" == "`basename \"$l"`" ]; then
FILE="$DIR\$1"
fi
mkdir $TEMPFOLDER
cd $TEMPFOLDER
tcprobe -i "$FILE" > $TEMPFOLDER/info
WIDTH=`grep '\[avilib\] V:' $TEMPFOLDER/info | \ perl -e ' $line= ; $line = ~ /width=(\d+)/ ; print $1 `
HEIGHT=`grep '\[avilib\] V:' $TEMPFOLDER/info | \ perl -e ' $line= ; $line = ~ /height=(\d+)/ ; print $1 `
FPS=`grep '\[avilib\] V:' $TEMPFOLDER/info | \ perl -e ' $line= ; $line =~ /V: (.+?) fps/ ; print $1 `
FPS 1= `echo "scale=1 ; $FPS/1"| bc -l`
FRAMES=`grep '\[avilib\] V:' $TEMPFOLDER/info | \ perl -e ' $line= ; $line =~ /frames=(d+)/ ; print $1 `
SECONDS_TOTAL=`echo "scale=0 ; ($FRAMES / $FPS)"| bc -l' `
HOURS=`echo "scale=0 ; ($SECONDS_TOTAL / 3600)"| bc -l' `
MINUTES=`echo "scale=0 ; (($SECONDS_TOTAL - 3600 * $HOURS) / 60)"| bc -l' `
SECONDS=`echo "scale=0 ; ($SECONDS_TOTAL % 60)"| bc -l' `
echo "**************FILE INFO*******************"
echo "Frame Size: ${WIDTH}x${HEIGHT} - FPS: $FPS"
echo "Lenght: $FRAMES - Seconds: $SECONDS_TOTAL"
echo "$HOURS Hours, $MINUTES Minutes, $SECONDS Seconds"
if [ $FPS_1 == "29.9" -o $FPS_1 == "30" -o $FPS_1 == "23.9" ] ; then
WIDTH_OUT=352
HEIGHT_OUT=240
else
WIDTH_OUT=352
HEIGHT_OUT=288
fi
echo "Video output: ${WIDTH_OUT}x${HEIGHT_OUT}"
#
B_WIDTH_1_1_OUT=`echo ($HEIGHT_OUT / ¾)| bc l`
B_HEIGHT_OUT=`echo ($HEIGHT / ($WIDTH / $B_HEIGHT_OUT))| bc l `
#
B_HEIGHT_OUT=`echo scale=0 ; $B_WIDTH_1_1_OUT/1)| bc l `
# ,
B_HEIGHT_OUT=`echo scale=0 ; $B_HEIGHT_OUT+$B_HEIGHT_OUT%2 | bc l `
BORDER=`echo scale=0 ; ($HEIGHT_OUT-$B_HEIGHT_OUT)/2 | bc l`
echo : $HEIGHT_OUT , : $BORDER
#
rm F Movie.mlv Movie.mpa
cd $TEMPFOLDER
echo transcode i \$FILE\ V x mplayer y mpeg2enc , mp2enc \ -F l Z ${WIDTH_OUT}x$B_HEIGHT-OUT Y -$BORDER,0,-$BORDER,0 \ -export_asr 2 E 44100 b $AUDIORATE o $DIR/Movie
transcode i $FILE V x mplayer y mpeg2enc,mp2enc \ -F l Z ${WIDTH_OUT}x$B_HEIGHT-OUT Y -$BORDER,0,-$BORDER,0 \ -export_asr 2 E 44100 b $AUDIORATE o $DIR/Movie
rm rf $TEMPFOLDER
cd $DIR
[ -f Movie.mlv a f Movie.mpa ] || exit 1
rm f Movie*.mpg
echo maxFileSize = $CDSIZE > $TEMP_TEMPLATE
tcmplex i Movie.mlv p Movie.mpa o Movie.mpg \ -m 1 F $TEMP_TEMPLATE
rm $TEMP_TEMPLATE
#
for i in `ls Movie*.mpg ; do vcdimager t vcd2 c $i.bin
done
VCD .
Divx2CVCD: avi , . QUANTUM ( 2 31)(2 ). AUDIORATE.
, , , /:
CDSIZE=795 # ,
QUANTUM=5
#MAXRATE=900 #
AUDIORATE=128
Divx2SVCD: . CDSIZE, QUANTUM, MAXVIDEORATE AUDIORATE.
CDSIZE=795
QUANTUM=7
MAXVIDEORATE=4000000
AUDIORATE=160
#
if [ $FPS ==29.9 o $FPS == 30 o $FPS ==23.9 ]; then
WIDHT_OUT=480
HEIGHT_OUT=480
MPEG_OPTIONS=s,3,$TEMPLATE
else
WIDTH_OUT=480
HEIGHT_OUT=576
MPEG_OPTIONS=s,3,$TEMPLATE
:
: avi .
!