vcdimager and "bad packet"
Randy Pratt
rpratt1950 at earthlink.net
Fri Nov 21 20:17:29 PST 2003
On Fri, 21 Nov 2003 01:59:20 -0500
Michael Joyner <mjoyner at hq.dyns.cx> wrote:
> You can "transcode" the avi files to divx avi file using mencoder before
> feeding to transcode (including size translations, etc),
> this will most likey make transcode much happier!
>
> also the following script that I use for recoding avis may be useful. :)
> (doesn't use transcode)
>
> you will of course have to fix it up for your situation, file system
> also, note that it is definately a work in progress. :)
> btw, all the spanish segments were taken from a web site somewhere,
> unfortunately, don't know where, so can't give proper copyright stuff
> I think it was GPL though.
Thanks! I'll give this a try once I study the script a bit.
I certainly appreciate the response.
Thank you
Randy
> #!/bin/sh
>
> AUDIORATE=224
> WIDTH_OUT=480
> HEIGHT_OUT=480
> CHAPTERS="0:00,10:00,20:00,30:00,40:00,50:00,1:00:00,1:10:00,1:20:00,1:30:00,1:40:00,1:50:00,2:00:00,2:10:00,2:20:00,2:30:00,2:40:00,2:50:00,3:00:00,3:10:00,3:20:00,3:30:00,3
> :40:00,3:50:00,4:00:00"
> #CHAPTERS="0"
>
> BASE_CD=700
>
> cd ~/dvdrip
> for i in avis/*; do
> if [ ! -s "$i" ]; then rm -vf "$i"; fi
> done
>
> TITLE_COUNT=0
> for i in avis/*; do
> TITLE_COUNT=$(($TITLE_COUNT+1));
> done
> xmessage -timeout 30 -center "Found $TITLE_COUNT Titles for miniDVD" &
> CDSIZE=$(($BASE_CD/$TITLE_COUNT))
> # CHOICE="`xmessage -print -center -buttons "1/10 CD,1/5 CD,1/4CD,1/3
> CD,1/2 CD,ONE CD" \
> # "How Many CD's for these Movies?"`"
> # echo $CHOICE
> # if [ "$CHOICE" = "1/10 CD" ]; then CDSIZE=$(($BASE_CD/10)); fi
> # if [ "$CHOICE" = "1/5 CD" ]; then CDSIZE=$(($BASE_CD/5)); fi
> # if [ "$CHOICE" = "1/4 CD" ]; then CDSIZE=$(($BASE_CD/4)); fi
> # if [ "$CHOICE" = "1/3 CD" ]; then CDSIZE=$(($BASE_CD/3)); fi
> # if [ "$CHOICE" = "1/2 CD" ]; then CDSIZE=$(($BASE_CD/2)); fi
> # if [ "$CHOICE" = "ONE CD" ]; then CDSIZE=$(($BASE_CD)); fi
>
> rm -rfv vcd3/*
> for i in avis/*; do
>
> #imported script stuff (that is in Espanol)
> tcprobe -i "$i" > vcd3/info
>
> WIDTH=`grep '\[avilib\] V:' vcd3/info | \
> perl -e ' $line=<STDIN> ; $line =~ /width=(\d+)/ ;
> print $1' `
> HEIGHT=`grep '\[avilib\] V:' vcd3/info | \
> perl -e ' $line=<STDIN> ; $line =~ /height=(\d+)/ ;
> print $1' `
> FPS=`grep '\[avilib\] V:' vcd3/info | \
> perl -e ' $line=<STDIN> ; $line =~ /V: (.+?) fps/ ;
> print $1' `
> FPS_1=`echo "scale=1 ; $FPS/1"| bc -l`
> FRAMES=`grep '\[avilib\] V:' vcd3/info | \
> perl -e ' $line=<STDIN> ; $line =~ /frames=(\d+)/ ;
> print $1' `
> SEGUNDOS_TOTAL=`echo "scale=0 ; ($FRAMES / $FPS)"| bc -l`
> HORAS=`echo "scale=0 ; ($SEGUNDOS_TOTAL / 3600)"| bc -l`
> MINUTOS=`echo "scale=0 ; (($SEGUNDOS_TOTAL - 3600 *
> $HORAS)/60)"| bc -l`
> SEGUNDOS=`echo "scale=0 ; ($SEGUNDOS_TOTAL % 60)"| bc -l`
>
> VIDEO_RATE=`echo "scale=0 ;(($CDSIZE * 1024 - \
> ($AUDIORATE/8*$SEGUNDOS_TOTAL))*8 / $SEGUNDOS_TOTAL)"|
> bc -l`
> if [ $VIDEO_RATE -ge 8000 ]; then VIDEO_RATE=8000; fi
> #VIDEO_RATE=1150
>
> rm vcd3/info
>
> echo "*************** FILE INFO ***************"
> echo "Frame Size: ${WIDTH}x${HEIGHT} - FPS: $FPS"
> echo "Length: $FRAMES - Seconds: $SEGUNDOS_TOTAL"
> echo "$HORAS hours, $MINUTOS minutes, $SEGUNDOS seconds"
> rm vcd3/info
>
> echo "*************** FILE INFO ***************"
> echo "Frame Size: ${WIDTH}x${HEIGHT} - FPS: $FPS"
> echo "Length: $FRAMES - Seconds: $SEGUNDOS_TOTAL"
> echo "$HORAS hours, $MINUTOS minutes, $SEGUNDOS seconds"
>
> echo
> echo "VIDEO-RATE: $VIDEO_RATE"
> CBR="`echo "$VIDEO_RATE * 1000" | bc -l`"
>
> cat > auto.prof << END
> #VCD profile to try and fit space allocated
> fixed_vbv_delay = 1
> vbv_buffer_size = 230
> cbr = 1
> cbr_bitrate = $CBR.0
> quant_value = 2
> qscale_type = 0
> vbr_mux = 0
> video_buf_size = 230
> use_comp_bitrate = 1
> max_bitrate = $CBR.0
> END
> echo "Video Output: ${WIDTH_OUT}x${HEIGHT_OUT}"
>
> # Ahora calculamos los valores pa los bordes.
>
> ANCHO_1_1_OUT="`echo "($HEIGHT_OUT * 4/3)"| bc -l`"
> ALTO_OUT="`echo "$HEIGHT / ($WIDTH / $ANCHO_1_1_OUT)" | bc -l`"
> # Redondeamos
> ALTO_OUT="`echo "scale=0 ; $ALTO_OUT/1"| bc -l`"
> # Nos aseguramos de que sea par
> ALTO_OUT="`echo "scale=0 ; $ALTO_OUT+$ALTO_OUT%2" | bc -l`"
>
> BORDE="`echo "scale=0 ; ($HEIGHT_OUT-$ALTO_OUT)/2"| bc -l`"
> echo "alto sin bordes: $ALTO_OUT, con borde: $BORDE"
> echo
> INASPECT="$WIDTH_OUT:$ALTO_OUT"
>
> B=`basename "$i"`
> C="$B ($HORAS:$MINUTOS:$SEGUNDOS minutes playtime) $CHOICE
> $VIDEO_RATE"
> BB=vcd3/$$.temp.avi
> echo "^[]0;$C - Stage 1 (Resizing)^G"
>
> mencoder -aspect "$INASPECT" -noskiplimit -ovc lavc \
> -lavcopts
> vcodec=mpeg2video:vhq:vrc_minrate=${VIDEO_RATE}:vbitrate=${VIDEO_RATE}:vrc_maxrate=${VIDEO_RATE}:aspect=4/3
> \
> -oac copy \
> -ofps 23.976 \
> -vop expand=$WIDTH_OUT:$HEIGHT_OUT,scale -zoom
> -xy $WIDTH_OUT \
> -o "$BB" "$i"
> # -oac pcm -srate 44100 \
> echo "^[]0;$C - Stage 2 (Converting into streams)^G"
> ffmpeg -i "$BB" \
> -b "${VIDEO_RATE}" \
> -r 23.976 \
> -aspect "4:3" \
> -vcodec copy \
> -acodec mp2 \
> -ab ${AUDIORATE} \
> -ar 44100 \
> -ac 2 \
> -f vcd \
> "vcd3/${B}.mpg"
> #echo "^[]0;$C - Stage 3 (Multiplexing into VOB)^G"
>
> #mplex -f 8 -V -o "vcd3/${B}.vob" "vcd3/${B}.m1v" "vcd3/${B}.mp2"
> # echo "^[]0;$C - Stage 4 (Adding Movie Title to DVD)^G"
> #dvdauthor\
> #-o vcd3/mydvd \
> #-a "en" \
> #-v "ntsc+4:3+${WIDTH_OUT}x${HEIGHT_OUT}" \
> #-t \
> #"vcd3/${B}.vob"
> rm "$BB"
> rm "vcd3/${B}.m1v"
> rm "vcd3/${B}.m2v"
> rm "vcd3/${B}.mp2"
> rm "vcd3/${B}.mp3"
> rm "vcd3/${B}.vob"
> #cdrdao blank --device 0,0,0 --force --driver generic-mmc-raw
> #cd vcd3 || exit 0
> #vcdxgen -t svcd --nopbc *vcd
> #vcdxbuild -p --gui *xml
> #cdrdao write --device 0,0,0 --force --driver generic-mmc-raw *.cue
> #cd ..
> echo "^[]0;Done Converting $C^G"
> echo
> exit 0
>
>
>
>
>
> Randy Pratt wrote:
>
> >I've been transcoding some avi files to mpeg2 format to make SVCDs so
> >that I can watch them on the tv.
> >
> >I've not had any problems with the transcoding, but when i use
> >vcdimager to create the bin/cue files I'll get a warning like:
> >
> > ++ WARN: bad packet at packet #314266 (stream byte offset
> > 730354184) -- remaining 796144300 bytes of stream will be ignored
> >
> >I did not create the original avi file but I'm guessing that this
> >problem was created when two avi files were joined together to make
> >one file.
> >
> >I'd appreciate any pointers on how to repair the breakage or any
> >method that could be used as a work-around. I've looked thru
> >man transcode and tons of google but so far found nothing to
> >address this.
> >
> >Any ideas appreciated!
> >
> >Thanks,
> >
> >Randy
> >
> >
> >_______________________________________________
> >freebsd-multimedia at freebsd.org mailing list
> >http://lists.freebsd.org/mailman/listinfo/freebsd-multimedia
> >To unsubscribe, send any mail to "freebsd-multimedia-unsubscribe at freebsd.org"
> >
> >
>
>
--
More information about the freebsd-multimedia
mailing list