Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion. Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules. |
26th March 2006, 07:04 | #1 | Link |
Registered User
Join Date: Mar 2006
Posts: 12
|
A little batch NSV converter (to vcd)
I wrote this script these days for help me converting a huge amount of nsv files.
Some limitations: - It will process nsv files in subdir like dir/subdir/*.nsv (this is because the way streamripper save files); - it also needs to have a workdir (that you will pass on script startup) so /workdir/dir1/anyname/*.nsv /workdir/dir2/anyname/*.nsv and it will produce /workdir/final_mpg_files/dir1.mpg /workdir/final_mpg_files/dir2.mpg - It use mplayer, mpgtx (wine and faad for the "demuxer version") tools: need to be installed - Don't place any other dir except the ones with nsv files cause they will be processed - Absolutly don't call dir with numbers cause will loop mpgtx creating huge log files I made two version: one simple (nsv--->mencoder-->mpgtx--->final_mpeg) and other a little ore complex (nsv-->NSVD.exe--->faad--->mencoder-->mpgtx--->final_mpeg) the "demuxer version" This last because I couldn't get mplayer work with AAC on Debian (now I'm on Fedora 4 and seems ok) so Debian users could try that if their mplayer can't handle AAC Some known bugs: - If an nsv file got some corrupted frames this will cause an a/v desync plus the cut of a piece of the stream cause mplayer will do these: Stream corrupted: - - - - - - V4 V5 V6 V7 V8 A1A2A3 A4 A5 A6 A7 A8 Resultant mpg files: V4 V5 V6 V7 V8 A1 A2 A3 A4 A5 if anyone knows how to resolve this is welcome - Also if someone could please post a good tool to join two+ mpeg files cause mpgtx seems to cause problems (I heard about using I/O redirection aka cat aka <> but could you assure me it will work?); this could be a way to resolve any type of problems derived from bad nsv files, just run the split command to divide nsv files in 512kb or 1 mb chunk each!!! By now I think it's all P.S. rename the file from zip to gz P.P.S Some Spam for google: nvs mplayer vcd svcd xvcd xsvcd dvd nsvd.exe linux Last edited by PavalloKazzo; 26th March 2006 at 07:06. |
26th March 2006, 07:05 | #2 | Link |
Registered User
Join Date: Mar 2006
Posts: 12
|
nsv2svcd
#!/bin/sh
ENCODER() { cd $NSV2SVCD_ROOT/$WORKPATH WORKPATH_NSV=$(ls) cd $NSV2SVCD_ROOT/$WORKPATH/$WORKPATH_NSV I=1 for FILENAME_NSV in *.nsv do mencoder ${FILENAME_NSV}.nsv -oac mp3lame -srate 44100 -lameopts cbr:br=128 -af lavcresample=44100 -vf scale=352:288,harddup -ovc lavc -lavcopts vcodec=mpeg1video:keyint=15:vbitrate=2000 -of mpeg -mpegopts format=xvcd -vf scale=352:288,harddup -ofps 25 -o ${I}.mpg >> $NSV2SVCD_ROOT/log/$WORKPATH/${I}_encoder_out 2>&1 echo "Process #$I: mencoder exit status $? " >> $NSV2SVCD_ROOT/log/$WORKPATH/encoder ((I++)) done FILENUMBER_NSV=$(ls *.nsv | wc -l) FILENUMBER_MPG=$(ls *.mpg | wc -l) if [ $FILENUMBER_NSV = $FILENUMBER_MPG ] then mv $NSV2SVCD_ROOT/$WORKPATH/$WORKPATH_NSV/*.mpg $NSV2SVCD_ROOT/$WORKPATH/ cd $NSV2SVCD_ROOT/$WORKPATH/ rm -r $WORKPATH_NSV echo -e "All files encoded\nFiles now will be deleted\nProceeding to MERGE status" >> $NSV2SVCD_ROOT/log/$WORKPATH/encoder return 0 else for (( I=1; I <= FILENUMBER_NSV; I++ )) do if [ ! -e ${I}.mpg ] then FILENAME_NSV=$( ls *.nsv | sed ${I}'!d' ) echo -e "There has been problems processing files ${FILENAME_NSV}.nsv corresponding to process $I\nCheck $NSV2SVCD_ROOT/log/$WORKPATH/${I}_encoder_out for errors" >> $NSV2SVCD_ROOT/log/$WORKPATH/encoder fi done return 1 fi } MERGER() { cd $NSV2SVCD_ROOT/$WORKPATH mpgfiles2beprocessed=$(ls *.mpg) mpgtx -j $mpgfiles2beprocessed -o $WORKPATH.mpg >> $NSV2SVCD_ROOT/log/$WORKPATH/merger 2>&1 echo "Merger exit status= $? " >> $NSV2SVCD_ROOT/log/$WORKPATH/merger if [ -e $WORKPATH.mpg ] then mv $WORKPATH.mpg $NSV2SVCD_ROOT/final_mpg_files cd .. rm -r $WORKPATH echo -e "All files merged\nMoving $WORKPATH.mpg to $NSV2SVCD_ROOT/final_mpg_files\nRemoving old files" >> $NSV2SVCD_ROOT/log/$WORKPATH/merger return 0 else echo -e "Files couldn't be processed\nCheck $NSV2SVCD_ROOT/log/$WORKPATH/merger for errors" >> $NSV2SVCD_ROOT/log/$WORKPATH/merger return 1 fi } echo -e "This program need these things to work:" echo -e " - mplayer and mpgtx installed" echo -e " - NSV files must be placed in dir/subdir respect to program root (it's not important the name of the directories)" echo -e " So it should be a directory for the program with a subdirectory containing every group of NSV files inside another subdir (/script_root/dir/subdir/*.nsv)" echo -e " - It's important that no else directories are placed inside the 'work_rooth' and it's important that inside these paths there is no files apart .nsv cause both of these will produce heavy error logs" echo -e " - DO NOT NAME PATHS WITH NUMBERS: this will cause infinite loop for mpgtx creating huge log file\n" echo -n "Now please press Ctrl+C to exit or to continue digit the absolut path where the script should work: " #read $NSV2SVCD_ROOT NSV2SVCD_ROOT=/home/pava/temp/week_13 ORIGINAL_PATH=$( pwd ) cd $NSV2SVCD_ROOT WORKPATHS_LIST=$( ls ) mkdir final_mpg_files mkdir log for WORKPATH in $WORKPATHS_LIST do mkdir $NSV2SVCD_ROOT/log/$WORKPATH/ for NSV2SVCD_FUNCTIONS in "ENCODER" "MERGER" do $NSV2SVCD_FUNCTIONS if [ $? != 0 ] then echo "$WORKPATH/$NSV2SVCD_FUNCTIONS: Problems occurred in this process. Check log files">> $NSV2SVCD_ROOT/log/nsv2svcd else echo "$WORKPATH/$NSV2SVCD_FUNCTIONS: Everything worked great... maybe!">> $NSV2SVCD_ROOT/log/nsv2svcd fi done done exit 0 |
26th March 2006, 07:05 | #3 | Link |
Registered User
Join Date: Mar 2006
Posts: 12
|
#!/bin/sh
DEMUXER() { cd $WORKPATH WORKPATH_NSV=$(ls) cp $ORIGINAL_PATH/NSVD.exe $WORKPATH_NSV/ cd $WORKPATH_NSV I=1 for FILENAME_NSV in *.nsv do wine NSVD.exe -n $FILENAME_NSV -a $I.avi -w $I.audio >> $NSV2SVCD_ROOT/log/$WORKPATH/${I}_demuxer_out 2>&1 echo "Process #$I $FILENAME_NSV: wine NSVD.exe exit status= $? " >> $NSV2SVCD_ROOT/log/$WORKPATH/demuxer ((I++)) done FILENUMBER_NSV=$(ls *.nsv | wc -l) FILENUMBER_AVI=$(ls *.avi | wc -l) FILENUMBER_AUDIO=$(ls *.audio | wc -l) if [ $FILENUMBER_AVI = $FILENUMBER_NSV ] && [ $FILENUMBER_AUDIO=$FILENUMBER_NSV ] then mv *.avi *.audio $NSV2SVCD_ROOT/$WORKPATH/ cd $NSV2SVCD_ROOT/$WORKPATH rm -r $WORKPATH_NSV echo -e "All NSV files demuxed\nNSV files deleted\nProceeding to ENCODE status" >> $NSV2SVCD_ROOT/log/$WORKPATH/demuxer return 0 else for (( I=1; I <= FILENUMBER_NSV; I++ )) do if [ ! -e ${I}.avi ] && [ ! -e ${I}.audio ] then FILENAME_NSV=$( ls *.nsv | sed ${I}'!d' ) echo -e "There has been problems processing file $FILENAME_NSV\nCheck $NSV2SVCD_ROOT/log/$WORKPATH/demuxer_${I}_err for any error" >> $NSV2SVCD_ROOT/log/$WORKPATH/demuxer fi done return 1 fi } ENCODER() { cd $NSV2SVCD_ROOT/$WORKPATH for (( I=1; I <= FILENUMBER_NSV; I++ )) do faad ${I}.audio -o ${I}.wav >> $NSV2SVCD_ROOT/log/$WORKPATH/${I}_encoder_audio_out 2>&1 echo "Process #$I: faad exit status= $? " >> $NSV2SVCD_ROOT/log/$WORKPATH/encoder if [ ! -e ${I}.wav ] then mv ${I}.wav ${I}.audio fi mencoder ${I}.avi -audiofile ${I}.wav -oac mp3lame -srate 44100 -lameopts cbr:br=128 -af lavcresample=44100 -ovc lavc -lavcopts vcodec=mpeg1video:keyint=15:vrc_buf_size=327:vrc_minrate=1152:vbitrate=1152:vrc_maxrate=1152 -of mpeg -mpegopts format=xvcd -vf scale=352:288,harddup -ofps 25 -o ${I}.mpg >> $NSV2SVCD_ROOT/log/$WORKPATH/${I}_encoder_out 2>&1 echo "Process #$I: mencoder exit status= $? " >> $NSV2SVCD_ROOT/log/$WORKPATH/encoder done FILENUMBER_MPG=$(ls *.mpg | wc -l) if [ $FILENUMBER_AVI = $FILENUMBER_MPG ] && [ $FILENUMBER_AUDIO=$FILENUMBER_MPG ] then rm $NSV2SVCD_ROOT/$WORKPATH/*.avi $NSV2SVCD_ROOT/$WORKPATH/*.audio echo -e "All avi and audio files muxed\nFiles now will be deleted\nProceeding to MERGE status" >> $NSV2SVCD_ROOT/log/$WORKPATH/encoder return 0 else for (( I=1; I <= FILENUMBER_NSV; I++ )) do if [ ! -e ${I}.mpg ] then echo -e "There has been problems processing files ${1}.avi and ${1}.audio\nCheck $NSV2SVCD_ROOT/log/$WORKPATH/encoder_${I}_err for any error" >> $NSV2SVCD_ROOT/log/$WORKPATH/encoder fi done return 1 fi } MERGER() { cd $NSV2SVCD_ROOT/$WORKPATH mpgfiles2beprocessed=$(ls *.mpg) mpgtx -j $mpgfiles2beprocessed -o $WORKPATH.mpg >> $NSV2SVCD_ROOT/log/$WORKPATH/merger 2>&1 echo "Merger exit status= $? " >> $NSV2SVCD_ROOT/log/$WORKPATH/merger if [ -e $WORKPATH.mpg ] then mv $WORKPATH.mpg $NSV2SVCD_ROOT/final_mpg_files cd .. rm -r $WORKPATH echo -e "All files merged\nMoving $WORKPATH.mpg to $NSV2SVCD_ROOT/final_mpg_files\nRemoving old files" >> $NSV2SVCD_ROOT/log/$WORKPATH/merger return 0 else echo -e "Files couldn't be processed\nCheck $NSV2SVCD_ROOT/log/$WORKPATH/merger for errors" >> $NSV2SVCD_ROOT/log/$WORKPATH/merger return 1 fi } echo -e "This program need these things to work:" echo -e " - wine (latest possible version), mplayer, faad and mpgtx installed" echo -e " - NSV files must be placed in dir/subdir respect to program root (it's not important the name of the directories)" echo -e " So it should be a directory for the program with a subdirectory containing every group of NSV files inside another subdir (/script_root/dir/subdir/*.nsv)" echo -e " - It's important that no else directories are placed inside the 'work_rooth' and it's important that inside these paths there is no files apart .nsv cause both of these will produce heavy error logs" echo -e " - Also there are some files in the package with this script that I will copy soon so please don't touch it, just prepare my work with the things above\n" #echo -n "Now please press Ctrl+C to exit or to continue digit the absolut path where the script should work: " #read $NSV2SVCD_ROOT NSV2SVCD_ROOT=/home/pava/temp/week_13 ORIGINAL_PATH=$( pwd ) cd $NSV2SVCD_ROOT WORKPATHS_LIST=$( ls ) mkdir final_mpg_files mkdir log for WORKPATH in $WORKPATHS_LIST do mkdir $NSV2SVCD_ROOT/log/$WORKPATH/ for NSV2SVCD_FUNCTIONS in "DEMUXER" "ENCODER" "MERGER" do $NSV2SVCD_FUNCTIONS if [ $? != 0 ] then echo "$WORKPATH/$NSV2SVCD_FUNCTIONS: Problems occurred in this process. Check log files">> $NSV2SVCD_ROOT/log/nsv2svcd else echo "$WORKPATH/$NSV2SVCD_FUNCTIONS: Everything worked great... maybe!">> $NSV2SVCD_ROOT/log/nsv2svcd fi done done exit 0 |
Thread Tools | Search this Thread |
Display Modes | |
|
|