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