From c557492f3e191e64e0a2737152e4c77a35476e1a Mon Sep 17 00:00:00 2001 From: "Alan J. Pippin" <ajp@server.pippins.net> Date: Sun, 6 Apr 2008 15:55:05 -0600 Subject: [PATCH 1/1] Added every script to track by default --- Windows Scripts/Adobe Encore DVD Howto.txt | 8 + Windows Scripts/Adobe Premiere Howto.txt | 1 + Windows Scripts/Compress DivX Audio.bat | 1 + .../DIVX Settings for DV to DIVX.txt | 0 .../DivX Adobe Premiere AVIs/Thumbs.db | Bin 0 -> 44544 bytes .../DubMan Templates/Compress DivX Audio.bat | 1 + .../DubMan Templates/Compress DivX Audio.djt | 33 ++ .../Convert DV to DivX 1st pass.djt | 59 +++ .../Convert DV to DivX 2 passes.djt | 59 +++ .../Convert DV to DivX 2nd pass HQ.djt | 59 +++ .../Convert DV to DivX 2nd pass.djt | 34 ++ .../DubMan Templates/Convert DV to DivX.bat | 1 + .../DubMan Templates/Convert DV to DivX.djt | 34 ++ .../Single DV AVI to DIVX.djt | 33 ++ .../VirtualDub Audio Compression.vcf | 17 + ...Dub DV to DIVX compression - pass 1 HQ.vcf | 18 + ...ualDub DV to DIVX compression - pass 1.vcf | 18 + ...Dub DV to DIVX compression - pass 2 HQ.vcf | 18 + ...ualDub DV to DIVX compression - pass 2.vcf | 18 + .../VirtualDub DV to DIVX compression.vcf | 18 + .../TMPG Settings/DIVX to DVD .mcf | 141 +++++++ .../TMPG Settings/DV to DVD 2pass VBR.mcf | 125 +++++++ .../TMPG Settings/DV to DVD CBR.mcf | 125 +++++++ .../TMPG Settings/DV to DVD CQ.mcf | 125 +++++++ .../TMPG Settings/DV to DVD wizard.mcf | 125 +++++++ Windows Scripts/TMPG Settings/DV to DVD.mcf | 125 +++++++ .../TMPG Settings/TV to DVD wizard CBR.mcf | 127 +++++++ .../TMPG Settings/TV to DVD wizard VBR.mcf | 127 +++++++ Windows Scripts/TMPG Settings/TV to DVD.mcf | 141 +++++++ Windows Scripts/Thumbs.db | Bin 0 -> 28672 bytes Windows Scripts/dv2all.bat | 17 + Windows Scripts/dv2divx.bat | 1 + Windows Scripts/dv2divx_2pass.bat | 1 + Windows Scripts/dv2divx_2pass_HQ.bat | 1 + Windows Scripts/dv2rm.bat | 1 + Windows Scripts/dv2rm.pl | 125 +++++++ avi2divx | 22 ++ avi2divx4 | 13 + avi2flv | 25 ++ avi2mp3avi | 4 + avi2raw | 10 + avi2xvid | 18 + avimerge | Bin 0 -> 63788 bytes backup_system.cmd | 14 + burniso.cmd | 3 + copy_home_videos.cmd | 64 ++++ create_merge_videos | 1 + dos2ux | Bin 0 -> 19771 bytes dump_raw_video_files_from_camera | 1 + em | 3 + fix_video_names | 1 + make_home_videos.cmd | 72 ++++ make_home_videos.cmd.noreboot | 67 ++++ make_home_videos.pl | 352 ++++++++++++++++++ merge_all_new_mpg_clips.pl | 56 +++ merge_mpg_clips | 8 + mov2avi | 7 + setprompt.pl | 50 +++ vob2avi | 8 + 59 files changed, 2536 insertions(+) create mode 100755 Windows Scripts/Adobe Encore DVD Howto.txt create mode 100755 Windows Scripts/Adobe Premiere Howto.txt create mode 100755 Windows Scripts/Compress DivX Audio.bat create mode 100755 Windows Scripts/DIVX Settings for DV to DIVX.txt create mode 100755 Windows Scripts/DivX Adobe Premiere AVIs/Thumbs.db create mode 100755 Windows Scripts/DubMan Templates/Compress DivX Audio.bat create mode 100755 Windows Scripts/DubMan Templates/Compress DivX Audio.djt create mode 100755 Windows Scripts/DubMan Templates/Convert DV to DivX 1st pass.djt create mode 100755 Windows Scripts/DubMan Templates/Convert DV to DivX 2 passes.djt create mode 100755 Windows Scripts/DubMan Templates/Convert DV to DivX 2nd pass HQ.djt create mode 100755 Windows Scripts/DubMan Templates/Convert DV to DivX 2nd pass.djt create mode 100755 Windows Scripts/DubMan Templates/Convert DV to DivX.bat create mode 100755 Windows Scripts/DubMan Templates/Convert DV to DivX.djt create mode 100755 Windows Scripts/DubMan Templates/Single DV AVI to DIVX.djt create mode 100755 Windows Scripts/DubMan Templates/VirtualDub Audio Compression.vcf create mode 100755 Windows Scripts/DubMan Templates/VirtualDub DV to DIVX compression - pass 1 HQ.vcf create mode 100755 Windows Scripts/DubMan Templates/VirtualDub DV to DIVX compression - pass 1.vcf create mode 100755 Windows Scripts/DubMan Templates/VirtualDub DV to DIVX compression - pass 2 HQ.vcf create mode 100755 Windows Scripts/DubMan Templates/VirtualDub DV to DIVX compression - pass 2.vcf create mode 100755 Windows Scripts/DubMan Templates/VirtualDub DV to DIVX compression.vcf create mode 100755 Windows Scripts/TMPG Settings/DIVX to DVD .mcf create mode 100755 Windows Scripts/TMPG Settings/DV to DVD 2pass VBR.mcf create mode 100755 Windows Scripts/TMPG Settings/DV to DVD CBR.mcf create mode 100755 Windows Scripts/TMPG Settings/DV to DVD CQ.mcf create mode 100755 Windows Scripts/TMPG Settings/DV to DVD wizard.mcf create mode 100755 Windows Scripts/TMPG Settings/DV to DVD.mcf create mode 100755 Windows Scripts/TMPG Settings/TV to DVD wizard CBR.mcf create mode 100755 Windows Scripts/TMPG Settings/TV to DVD wizard VBR.mcf create mode 100755 Windows Scripts/TMPG Settings/TV to DVD.mcf create mode 100755 Windows Scripts/Thumbs.db create mode 100755 Windows Scripts/dv2all.bat create mode 100755 Windows Scripts/dv2divx.bat create mode 100755 Windows Scripts/dv2divx_2pass.bat create mode 100755 Windows Scripts/dv2divx_2pass_HQ.bat create mode 100755 Windows Scripts/dv2rm.bat create mode 100755 Windows Scripts/dv2rm.pl create mode 100755 avi2divx create mode 100755 avi2divx4 create mode 100755 avi2flv create mode 100755 avi2mp3avi create mode 100755 avi2raw create mode 100755 avi2xvid create mode 100755 avimerge create mode 100755 backup_system.cmd create mode 100755 burniso.cmd create mode 100755 copy_home_videos.cmd create mode 100644 create_merge_videos create mode 100755 dos2ux create mode 100755 dump_raw_video_files_from_camera create mode 100755 em create mode 100644 fix_video_names create mode 100755 make_home_videos.cmd create mode 100755 make_home_videos.cmd.noreboot create mode 100755 make_home_videos.pl create mode 100755 merge_all_new_mpg_clips.pl create mode 100755 merge_mpg_clips create mode 100755 mov2avi create mode 100755 setprompt.pl create mode 100755 vob2avi diff --git a/Windows Scripts/Adobe Encore DVD Howto.txt b/Windows Scripts/Adobe Encore DVD Howto.txt new file mode 100755 index 0000000..927e278 --- /dev/null +++ b/Windows Scripts/Adobe Encore DVD Howto.txt @@ -0,0 +1,8 @@ +1) Cannot transcode DIVX avi source files. Transcoder just hangs. + Currently, must convert all DIVX avi source files to DV avi. +2) DV source files will transcode properly. +3) Use NTSC Progressive High Quality 7Mb VBR 2 Pass PCM encoding. +4) Raw Premiere Projects exported as DV have out of focus text banners. + So, export to DV, convert to high quality DIVX, then take that DIVX + file and convert it to DV. Use this DV file as the source file, and + everything will look great. \ No newline at end of file diff --git a/Windows Scripts/Adobe Premiere Howto.txt b/Windows Scripts/Adobe Premiere Howto.txt new file mode 100755 index 0000000..f7a1b7a --- /dev/null +++ b/Windows Scripts/Adobe Premiere Howto.txt @@ -0,0 +1 @@ +1) Issue with exporting to DIVX. Strange artifacts occur in the DIVX source. \ No newline at end of file diff --git a/Windows Scripts/Compress DivX Audio.bat b/Windows Scripts/Compress DivX Audio.bat new file mode 100755 index 0000000..bcba0f5 --- /dev/null +++ b/Windows Scripts/Compress DivX Audio.bat @@ -0,0 +1 @@ +"C:\Program Files\Java\j2re1.4.0\bin\javaw.exe" -jar "C:\Program Files\DubMan\DubMan.jar" "V:\Videos\DubMan Templates\Compress DivX Audio.djt" /r diff --git a/Windows Scripts/DIVX Settings for DV to DIVX.txt b/Windows Scripts/DIVX Settings for DV to DIVX.txt new file mode 100755 index 0000000..e69de29 diff --git a/Windows Scripts/DivX Adobe Premiere AVIs/Thumbs.db b/Windows Scripts/DivX Adobe Premiere AVIs/Thumbs.db new file mode 100755 index 0000000000000000000000000000000000000000..f6167677f4526044cbd9f31e41494150cfffe27a GIT binary patch literal 44544 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 b_3FRVTmDX-5e32iht~Di=KsI`y(jP=u7p<l literal 0 HcmV?d00001 diff --git a/Windows Scripts/DubMan Templates/Compress DivX Audio.bat b/Windows Scripts/DubMan Templates/Compress DivX Audio.bat new file mode 100755 index 0000000..bcba0f5 --- /dev/null +++ b/Windows Scripts/DubMan Templates/Compress DivX Audio.bat @@ -0,0 +1 @@ +"C:\Program Files\Java\j2re1.4.0\bin\javaw.exe" -jar "C:\Program Files\DubMan\DubMan.jar" "V:\Videos\DubMan Templates\Compress DivX Audio.djt" /r diff --git a/Windows Scripts/DubMan Templates/Compress DivX Audio.djt b/Windows Scripts/DubMan Templates/Compress DivX Audio.djt new file mode 100755 index 0000000..02a32c8 --- /dev/null +++ b/Windows Scripts/DubMan Templates/Compress DivX Audio.djt @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<dubman:template xmlns:dubman="http://dubman.sourceforge.net" name="" format="1.1" version="0.812"> + <dubman:bulk> + <dubman:wildcard /> + </dubman:bulk> + <dubman:jobs> + <dubman:job> + <dubman:name value="Compress DivX Audio" /> + <dubman:input value="V:\Videos\Divx Adobe Premiere AVIs\*.avi" /> + <dubman:output value="V:\Videos\*.avi" /> + <dubman:deleteInput value="false" /> + <dubman:script>VirtualDub.audio.SetSource(1); +VirtualDub.audio.SetMode(1); +VirtualDub.audio.SetInterleave(1,500,1,0,0); +VirtualDub.audio.SetClipMode(1,1); +VirtualDub.audio.SetConversion(0,0,0,0,0); +VirtualDub.audio.SetVolume(); +VirtualDub.audio.SetCompression(85,48000,2,0,16000,1,12,"AQAAAAAAAQAAAOgD"); +VirtualDub.audio.EnableFilterGraph(0); +VirtualDub.video.SetDepth(24,24); +VirtualDub.video.SetMode(0); +VirtualDub.video.SetFrameRate(0,1); +VirtualDub.video.SetIVTC(0,0,-1,0); +VirtualDub.video.SetRange(0,0); +VirtualDub.video.SetCompression(); +VirtualDub.video.filters.Clear(); +VirtualDub.audio.filters.Clear(); +VirtualDub.subset.Delete();</dubman:script> + <dubman:runWith value="0" /> + </dubman:job> + </dubman:jobs> +</dubman:template> + diff --git a/Windows Scripts/DubMan Templates/Convert DV to DivX 1st pass.djt b/Windows Scripts/DubMan Templates/Convert DV to DivX 1st pass.djt new file mode 100755 index 0000000..b21d579 --- /dev/null +++ b/Windows Scripts/DubMan Templates/Convert DV to DivX 1st pass.djt @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<dubman:template xmlns:dubman="http://dubman.sourceforge.net" name="" format="1.1" version="0.812"> + <dubman:bulk> + <dubman:wildcard /> + </dubman:bulk> + <dubman:jobs> + <dubman:job> + <dubman:name value="Convert DV to DivX 1st Pass" /> + <dubman:input value="U:\MiniDV\*.avi" /> + <dubman:output value="V:\DIVX-Videos\firstpass.avi" /> + <dubman:deleteInput value="false" /> + <dubman:script>VirtualDub.audio.SetSource(1); +VirtualDub.audio.SetMode(1); +VirtualDub.audio.SetInterleave(1,500,1,0,0); +VirtualDub.audio.SetClipMode(1,1); +VirtualDub.audio.SetConversion(0,0,0,0,0); +VirtualDub.audio.SetVolume(); +VirtualDub.audio.SetCompression(85,48000,2,0,16000,1,12,"AQACAAAAgAEBAHEF"); +VirtualDub.audio.EnableFilterGraph(0); +VirtualDub.video.SetDepth(24,24); +VirtualDub.video.SetMode(3); +VirtualDub.video.SetFrameRate(0,1); +VirtualDub.video.SetIVTC(0,0,-1,0); +VirtualDub.video.SetRange(0,0); +VirtualDub.video.SetCompression(0x78766964,0,10000,0); +VirtualDub.video.SetCompData(512,"zAEAAAAAAAACAAAAAAk9AAAAgEABAAAAAAAAAAAAAAAAAAAAAAAAAJYAAAAyAAAA0EfIAQAAYAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAmpmZmZmZyT+amZmZmZnJPwAAAAAAAAAAAAAAAIACAADgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAZAAAAAAAAAABAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAwAAAAEAAAAAAAAAAAAAAFY6XGRpdngubG9nAGM6XHRlc3QuZGl2eABjOlxtdmluZm8uYmluAGM6XG5ld3JjLnR4dAA="); +VirtualDub.video.filters.Clear(); +VirtualDub.audio.filters.Clear(); +VirtualDub.subset.Delete();</dubman:script> + <dubman:runWith value="0" /> + </dubman:job> + <dubman:job> + <dubman:name value="Convert DV to DivX 2nd Pass" /> + <dubman:input value="V:\DIVX-VIdeos\firstpass.avi" /> + <dubman:output value="V:\DIVX-Videos\*.avi" /> + <dubman:deleteInput value="false" /> + <dubman:script>VirtualDub.audio.SetSource(1); +VirtualDub.audio.SetMode(1); +VirtualDub.audio.SetInterleave(1,500,1,0,0); +VirtualDub.audio.SetClipMode(1,1); +VirtualDub.audio.SetConversion(0,0,0,0,0); +VirtualDub.audio.SetVolume(); +VirtualDub.audio.SetCompression(85,48000,2,0,16000,1,12,"AQACAAAAgAEBAHEF"); +VirtualDub.audio.EnableFilterGraph(0); +VirtualDub.video.SetDepth(24,24); +VirtualDub.video.SetMode(3); +VirtualDub.video.SetFrameRate(0,1); +VirtualDub.video.SetIVTC(0,0,-1,0); +VirtualDub.video.SetRange(0,0); +VirtualDub.video.SetCompression(0x78766964,0,10000,0); +VirtualDub.video.SetCompData(512,"zAEAAAAAAAACAAAAAAk9AAAAgEABAAAAAAAAAAAAAAAAAAAAAAAAAJYAAAAyAAAA0EfIAQAAYAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAmpmZmZmZyT+amZmZmZnJPwAAAAAAAAAAAAAAAIACAADgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAZAAAAAAAAAABAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAwAAAAEAAAAAAAAAAAAAAFY6XGRpdngubG9nAGM6XHRlc3QuZGl2eABjOlxtdmluZm8uYmluAGM6XG5ld3JjLnR4dAA="); +VirtualDub.video.filters.Clear(); +VirtualDub.audio.filters.Clear(); +VirtualDub.subset.Delete();</dubman:script> + <dubman:runWith value="0" /> + </dubman:job> + </dubman:jobs> +</dubman:template> + diff --git a/Windows Scripts/DubMan Templates/Convert DV to DivX 2 passes.djt b/Windows Scripts/DubMan Templates/Convert DV to DivX 2 passes.djt new file mode 100755 index 0000000..471c1b5 --- /dev/null +++ b/Windows Scripts/DubMan Templates/Convert DV to DivX 2 passes.djt @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<dubman:template xmlns:dubman="http://dubman.sourceforge.net" name="" format="1.1" version="0.812"> + <dubman:bulk> + <dubman:wildcard /> + </dubman:bulk> + <dubman:jobs> + <dubman:job> + <dubman:name value="Convert DV to DivX 1st Pass" /> + <dubman:input value="U:\MiniDV\*.avi" /> + <dubman:output value="V:\DIVX-Videos\*.avi" /> + <dubman:deleteInput value="false" /> + <dubman:script>VirtualDub.audio.SetSource(1); +VirtualDub.audio.SetMode(1); +VirtualDub.audio.SetInterleave(1,500,1,0,0); +VirtualDub.audio.SetClipMode(1,1); +VirtualDub.audio.SetConversion(0,0,0,0,0); +VirtualDub.audio.SetVolume(); +VirtualDub.audio.SetCompression(85,48000,2,0,16000,1,12,"AQACAAAAgAEBAHEF"); +VirtualDub.audio.EnableFilterGraph(0); +VirtualDub.video.SetDepth(24,24); +VirtualDub.video.SetMode(3); +VirtualDub.video.SetFrameRate(0,1); +VirtualDub.video.SetIVTC(0,0,-1,0); +VirtualDub.video.SetRange(0,0); +VirtualDub.video.SetCompression(0x78766964,0,10000,0); +VirtualDub.video.SetCompData(512,"zAEAAAAAAAACAAAAAAk9AAAAgEABAAAAAAAAAAAAAAAAAAAAAAAAAJYAAAAyAAAA0EfIAQAAYAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAmpmZmZmZyT+amZmZmZnJPwAAAAAAAAAAAAAAAIACAADgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAZAAAAAAAAAABAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAwAAAAEAAAAAAAAAAAAAAFY6XGRpdngubG9nAGM6XHRlc3QuZGl2eABjOlxtdmluZm8uYmluAGM6XG5ld3JjLnR4dAA="); +VirtualDub.video.filters.Clear(); +VirtualDub.audio.filters.Clear(); +VirtualDub.subset.Delete();</dubman:script> + <dubman:runWith value="0" /> + </dubman:job> + <dubman:job> + <dubman:name value="Convert DV to DivX 2nd Pass" /> + <dubman:input value="U:\MiniDV\*.avi" /> + <dubman:output value="V:\DIVX-Videos\*.avi" /> + <dubman:deleteInput value="false" /> + <dubman:script>VirtualDub.audio.SetSource(1); +VirtualDub.audio.SetMode(1); +VirtualDub.audio.SetInterleave(1,500,1,0,0); +VirtualDub.audio.SetClipMode(1,1); +VirtualDub.audio.SetConversion(0,0,0,0,0); +VirtualDub.audio.SetVolume(); +VirtualDub.audio.SetCompression(85,48000,2,0,16000,1,12,"AQACAAAAgAEBAHEF"); +VirtualDub.audio.EnableFilterGraph(0); +VirtualDub.video.SetDepth(24,24); +VirtualDub.video.SetMode(3); +VirtualDub.video.SetFrameRate(0,1); +VirtualDub.video.SetIVTC(0,0,-1,0); +VirtualDub.video.SetRange(0,0); +VirtualDub.video.SetCompression(0x78766964,0,10000,0); +VirtualDub.video.SetCompData(512,"zAEAAAAAAAACAAAAAAk9AAAAgEABAAAAAAAAAAAAAAAAAAAAAAAAAJYAAAAyAAAA0EfIAQAAYAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAmpmZmZmZyT+amZmZmZnJPwAAAAAAAAAAAAAAAIACAADgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAZAAAAAAAAAABAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAwAAAAEAAAAAAAAAAAAAAFY6XGRpdngubG9nAGM6XHRlc3QuZGl2eABjOlxtdmluZm8uYmluAGM6XG5ld3JjLnR4dAA="); +VirtualDub.video.filters.Clear(); +VirtualDub.audio.filters.Clear(); +VirtualDub.subset.Delete();</dubman:script> + <dubman:runWith value="0" /> + </dubman:job> + </dubman:jobs> +</dubman:template> + diff --git a/Windows Scripts/DubMan Templates/Convert DV to DivX 2nd pass HQ.djt b/Windows Scripts/DubMan Templates/Convert DV to DivX 2nd pass HQ.djt new file mode 100755 index 0000000..fe89a1c --- /dev/null +++ b/Windows Scripts/DubMan Templates/Convert DV to DivX 2nd pass HQ.djt @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<dubman:template xmlns:dubman="http://dubman.sourceforge.net" name="" format="1.1" version="0.812"> + <dubman:bulk> + <dubman:wildcard /> + </dubman:bulk> + <dubman:jobs> + <dubman:job> + <dubman:name value="Convert DV to DivX 1st Pass" /> + <dubman:input value="V:\MiniDV\*.avi" /> + <dubman:output value="V:\DIVX-Videos\*.avi" /> + <dubman:deleteInput value="false" /> + <dubman:script>VirtualDub.audio.SetSource(1); +VirtualDub.audio.SetMode(1); +VirtualDub.audio.SetInterleave(1,500,1,0,0); +VirtualDub.audio.SetClipMode(1,1); +VirtualDub.audio.SetConversion(0,0,0,0,0); +VirtualDub.audio.SetVolume(); +VirtualDub.audio.SetCompression(85,48000,2,0,16000,1,12,"AQACAAAAgAEBAHEF"); +VirtualDub.audio.EnableFilterGraph(0); +VirtualDub.video.SetDepth(24,24); +VirtualDub.video.SetMode(3); +VirtualDub.video.SetFrameRate(0,1); +VirtualDub.video.SetIVTC(0,0,-1,0); +VirtualDub.video.SetRange(0,0); +VirtualDub.video.SetCompression(0x78766964,0,10000,0); +VirtualDub.video.SetCompData(512,"zAEAAAAAAAACAAAAgI1bAAAAgEABAAAAAAAAAAAAAAAAAAAAAAAAAJYAAAAyAAAA0EfIAQAAYAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAmpmZmZmZyT+amZmZmZnJPwAAAAAAAAAAAAAAAIACAADgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAZAAAAAAAAAABAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAwAAAAEAAAAAAAAAAAAAAFY6XGRpdngubG9nAGM6XHRlc3QuZGl2eABjOlxtdmluZm8uYmluAGM6XG5ld3JjLnR4dAA="); +VirtualDub.video.filters.Clear(); +VirtualDub.audio.filters.Clear(); +VirtualDub.subset.Delete();</dubman:script> + <dubman:runWith value="0" /> + </dubman:job> + <dubman:job> + <dubman:name value="Convert DV to DivX 2nd Pass" /> + <dubman:input value="V:\MiniDV\*.avi" /> + <dubman:output value="V:\DIVX-Videos\*.avi" /> + <dubman:deleteInput value="false" /> + <dubman:script>VirtualDub.audio.SetSource(1); +VirtualDub.audio.SetMode(1); +VirtualDub.audio.SetInterleave(1,500,1,0,0); +VirtualDub.audio.SetClipMode(1,1); +VirtualDub.audio.SetConversion(0,0,0,0,0); +VirtualDub.audio.SetVolume(); +VirtualDub.audio.SetCompression(85,48000,2,0,16000,1,12,"AQACAAAAgAEBAHEF"); +VirtualDub.audio.EnableFilterGraph(0); +VirtualDub.video.SetDepth(24,24); +VirtualDub.video.SetMode(3); +VirtualDub.video.SetFrameRate(0,1); +VirtualDub.video.SetIVTC(0,0,-1,0); +VirtualDub.video.SetRange(0,0); +VirtualDub.video.SetCompression(0x78766964,0,10000,0); +VirtualDub.video.SetCompData(512,"zAEAAAAAAAADAAAAgI1bAAAAgEABAAAAAAAAAAAAAAAAAAAAAAAAAJYAAAAyAAAA0EfIAQAAYAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAmpmZmZmZyT+amZmZmZnJPwAAAAAAAAAAAAAAAIACAADgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAZAAAAAAAAAABAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAwAAAAEAAAAAAAAAAAAAAFY6XGRpdngubG9nAGM6XHRlc3QuZGl2eABjOlxtdmluZm8uYmluAGM6XG5ld3JjLnR4dAA="); +VirtualDub.video.filters.Clear(); +VirtualDub.audio.filters.Clear(); +VirtualDub.subset.Delete();</dubman:script> + <dubman:runWith value="0" /> + </dubman:job> + </dubman:jobs> +</dubman:template> + diff --git a/Windows Scripts/DubMan Templates/Convert DV to DivX 2nd pass.djt b/Windows Scripts/DubMan Templates/Convert DV to DivX 2nd pass.djt new file mode 100755 index 0000000..ea220fe --- /dev/null +++ b/Windows Scripts/DubMan Templates/Convert DV to DivX 2nd pass.djt @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<dubman:template xmlns:dubman="http://dubman.sourceforge.net" name="" format="1.1" version="0.812"> + <dubman:bulk> + <dubman:wildcard /> + </dubman:bulk> + <dubman:jobs> + <dubman:job> + <dubman:name value="Convert DV to DivX 2nd Pass" /> + <dubman:input value="U:\MiniDV\*.avi" /> + <dubman:output value="V:\DIVX-Videos\*.avi" /> + <dubman:deleteInput value="false" /> + <dubman:script>VirtualDub.audio.SetSource(1); +VirtualDub.audio.SetMode(1); +VirtualDub.audio.SetInterleave(1,500,1,0,0); +VirtualDub.audio.SetClipMode(1,1); +VirtualDub.audio.SetConversion(0,0,0,0,0); +VirtualDub.audio.SetVolume(); +VirtualDub.audio.SetCompression(85,48000,2,0,16000,1,12,"AQACAAAAgAEBAHEF"); +VirtualDub.audio.EnableFilterGraph(0); +VirtualDub.video.SetDepth(24,24); +VirtualDub.video.SetMode(3); +VirtualDub.video.SetFrameRate(0,1); +VirtualDub.video.SetIVTC(0,0,-1,0); +VirtualDub.video.SetRange(0,0); +VirtualDub.video.SetCompression(0x78766964,0,10000,0); +VirtualDub.video.SetCompData(364,"OAEAAAAAAAADAAAAwMYtAAAAgEABAAAAAAAAAAAAAAAAAAAAlgAAADIAAAAgEWoAAAAwAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAACamZmZmZnJP5qZmZmZmck/AgAAAAAAAAAAAAAAgAIAAOABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAABkAAAAAAAAAAEAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAACAAAA/////wEAAAAAAAAAAAAAAAAAAAACAAAAYzpcZGl2eC5sb2cAYzpcdGVzdC5kaXZ4AGM6XG12aW5mby5iaW4AYzpcbmV3cmMudHh0AA=="); +VirtualDub.video.filters.Clear(); +VirtualDub.audio.filters.Clear(); +VirtualDub.subset.Delete();</dubman:script> + <dubman:runWith value="0" /> + </dubman:job> + </dubman:jobs> +</dubman:template> + diff --git a/Windows Scripts/DubMan Templates/Convert DV to DivX.bat b/Windows Scripts/DubMan Templates/Convert DV to DivX.bat new file mode 100755 index 0000000..6067262 --- /dev/null +++ b/Windows Scripts/DubMan Templates/Convert DV to DivX.bat @@ -0,0 +1 @@ +"C:\Program Files\Java\j2re1.4.0\bin\javaw.exe" -jar "C:\Program Files\DubMan\DubMan.jar" "V:\Videos\DubMan Templates\Convert DV to DivX.djt" /r diff --git a/Windows Scripts/DubMan Templates/Convert DV to DivX.djt b/Windows Scripts/DubMan Templates/Convert DV to DivX.djt new file mode 100755 index 0000000..a4b18eb --- /dev/null +++ b/Windows Scripts/DubMan Templates/Convert DV to DivX.djt @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<dubman:template xmlns:dubman="http://dubman.sourceforge.net" name="" format="1.1" version="0.812"> + <dubman:bulk> + <dubman:wildcard /> + </dubman:bulk> + <dubman:jobs> + <dubman:job> + <dubman:name value="Convert DV to DivX" /> + <dubman:input value="U:\MiniDV\*.avi" /> + <dubman:output value="V:\DIVX-Videos\*.avi" /> + <dubman:deleteInput value="false" /> + <dubman:script>VirtualDub.audio.SetSource(1); +VirtualDub.audio.SetMode(1); +VirtualDub.audio.SetInterleave(1,500,1,0,0); +VirtualDub.audio.SetClipMode(1,1); +VirtualDub.audio.SetConversion(0,0,0,0,0); +VirtualDub.audio.SetVolume(); +VirtualDub.audio.SetCompression(85,48000,2,0,16000,1,12,"AQACAAAAgAEBAHEF"); +VirtualDub.audio.EnableFilterGraph(0); +VirtualDub.video.SetDepth(24,24); +VirtualDub.video.SetMode(3); +VirtualDub.video.SetFrameRate(0,1); +VirtualDub.video.SetIVTC(0,0,-1,0); +VirtualDub.video.SetRange(0,0); +VirtualDub.video.SetCompression(0x78766964,0,10000,0); +VirtualDub.video.SetCompData(364,"OAEAAAAAAAAAAAAAwMYtAAAAgEABAAAAAAAAAAAAAAAAAAAAlgAAADIAAAAgEWoAAAAwAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAACamZmZmZnJP5qZmZmZmck/AgAAAAAAAAAAAAAAgAIAAOABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAABkAAAAAAAAAAEAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAACAAAA/////wEAAAAAAAAAAAAAAAAAAAACAAAAYzpcZGl2eC5sb2cAYzpcdGVzdC5kaXZ4AGM6XG12aW5mby5iaW4AYzpcbmV3cmMudHh0AA=="); +VirtualDub.video.filters.Clear(); +VirtualDub.audio.filters.Clear(); +VirtualDub.subset.Delete();</dubman:script> + <dubman:runWith value="0" /> + </dubman:job> + </dubman:jobs> +</dubman:template> + diff --git a/Windows Scripts/DubMan Templates/Single DV AVI to DIVX.djt b/Windows Scripts/DubMan Templates/Single DV AVI to DIVX.djt new file mode 100755 index 0000000..5b1be6e --- /dev/null +++ b/Windows Scripts/DubMan Templates/Single DV AVI to DIVX.djt @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<dubman:template xmlns:dubman="http://dubman.sourceforge.net" format="1.0" version="0.711"> + <dubman:bulk /> + <dubman:jobs> + <dubman:job> + <dubman:name value="Test" /> + <dubman:input value="V:\MiniDV\Hospital Entrance.avi" /> + <dubman:output value="V:\Videos\VirtualDub AVIs\Test.avi" /> + <dubman:deleteInput value="false" /> + <dubman:script>VirtualDub.audio.SetSource(1); +VirtualDub.audio.SetMode(1); +VirtualDub.audio.SetInterleave(1,500,1,0,0); +VirtualDub.audio.SetClipMode(1,1); +VirtualDub.audio.SetConversion(0,0,0,0,0); +VirtualDub.audio.SetVolume(); +VirtualDub.audio.SetCompression(85,48000,2,0,16000,1,12,"AQACAAAAgAEBAHEF"); +VirtualDub.audio.EnableFilterGraph(0); +VirtualDub.video.SetDepth(24,24); +VirtualDub.video.SetMode(3); +VirtualDub.video.SetFrameRate(0,1); +VirtualDub.video.SetIVTC(0,0,-1,0); +VirtualDub.video.SetRange(0,0); +VirtualDub.video.SetCompression(0x78766964,0,10000,0); +VirtualDub.video.SetCompData(319,"GAEAAGCuCgDQBwAACgAAABQAAAAsAQAADAAAAAIAAAAFAAAAAAAAACgAAAAAAAAAAAAAABQAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAyAAAAAAAAAAAAAAAAAACgmZnJPwAAAKCZmck/QAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAIACAADgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAD/////AQAAAGM6XGRpdngubG9nAGM6XHRlc3QuZGl2eABjOlxtdmluZm8uYmluAA=="); +VirtualDub.video.filters.Clear(); +VirtualDub.audio.filters.Clear(); +VirtualDub.subset.Delete(); +</dubman:script> + <dubman:runWith value="0" /> + </dubman:job> + </dubman:jobs> +</dubman:template> + diff --git a/Windows Scripts/DubMan Templates/VirtualDub Audio Compression.vcf b/Windows Scripts/DubMan Templates/VirtualDub Audio Compression.vcf new file mode 100755 index 0000000..970ee9d --- /dev/null +++ b/Windows Scripts/DubMan Templates/VirtualDub Audio Compression.vcf @@ -0,0 +1,17 @@ +VirtualDub.audio.SetSource(1); +VirtualDub.audio.SetMode(1); +VirtualDub.audio.SetInterleave(1,500,1,0,0); +VirtualDub.audio.SetClipMode(1,1); +VirtualDub.audio.SetConversion(0,0,0,0,0); +VirtualDub.audio.SetVolume(); +VirtualDub.audio.SetCompression(85,48000,2,0,16000,1,12,"AQAAAAAAAQAAAOgD"); +VirtualDub.audio.EnableFilterGraph(0); +VirtualDub.video.SetDepth(24,24); +VirtualDub.video.SetMode(0); +VirtualDub.video.SetFrameRate(0,1); +VirtualDub.video.SetIVTC(0,0,-1,0); +VirtualDub.video.SetRange(0,0); +VirtualDub.video.SetCompression(); +VirtualDub.video.filters.Clear(); +VirtualDub.audio.filters.Clear(); +VirtualDub.subset.Delete(); diff --git a/Windows Scripts/DubMan Templates/VirtualDub DV to DIVX compression - pass 1 HQ.vcf b/Windows Scripts/DubMan Templates/VirtualDub DV to DIVX compression - pass 1 HQ.vcf new file mode 100755 index 0000000..350f645 --- /dev/null +++ b/Windows Scripts/DubMan Templates/VirtualDub DV to DIVX compression - pass 1 HQ.vcf @@ -0,0 +1,18 @@ +VirtualDub.audio.SetSource(1); +VirtualDub.audio.SetMode(1); +VirtualDub.audio.SetInterleave(1,500,1,0,0); +VirtualDub.audio.SetClipMode(1,1); +VirtualDub.audio.SetConversion(0,0,0,0,0); +VirtualDub.audio.SetVolume(); +VirtualDub.audio.SetCompression(85,48000,2,0,16000,1,12,"AQACAAAAgAEBAHEF"); +VirtualDub.audio.EnableFilterGraph(0); +VirtualDub.video.SetDepth(24,24); +VirtualDub.video.SetMode(3); +VirtualDub.video.SetFrameRate(0,1); +VirtualDub.video.SetIVTC(0,0,-1,0); +VirtualDub.video.SetRange(0,0); +VirtualDub.video.SetCompression(0x78766964,0,10000,0); +VirtualDub.video.SetCompData(512,"zAEAAAAAAAACAAAAgI1bAAAAgEABAAAAAAAAAAAAAAAAAAAAAAAAAJYAAAAyAAAA0EfIAQAAYAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAmpmZmZmZyT+amZmZmZnJPwAAAAAAAAAAAAAAAIACAADgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAZAAAAAAAAAABAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAwAAAAEAAAAAAAAAAAAAAFY6XGRpdngubG9nAGM6XHRlc3QuZGl2eABjOlxtdmluZm8uYmluAGM6XG5ld3JjLnR4dAA="); +VirtualDub.video.filters.Clear(); +VirtualDub.audio.filters.Clear(); +VirtualDub.subset.Delete(); diff --git a/Windows Scripts/DubMan Templates/VirtualDub DV to DIVX compression - pass 1.vcf b/Windows Scripts/DubMan Templates/VirtualDub DV to DIVX compression - pass 1.vcf new file mode 100755 index 0000000..111719b --- /dev/null +++ b/Windows Scripts/DubMan Templates/VirtualDub DV to DIVX compression - pass 1.vcf @@ -0,0 +1,18 @@ +VirtualDub.audio.SetSource(1); +VirtualDub.audio.SetMode(1); +VirtualDub.audio.SetInterleave(1,500,1,0,0); +VirtualDub.audio.SetClipMode(1,1); +VirtualDub.audio.SetConversion(0,0,0,0,0); +VirtualDub.audio.SetVolume(); +VirtualDub.audio.SetCompression(85,48000,2,0,16000,1,12,"AQACAAAAgAEBAHEF"); +VirtualDub.audio.EnableFilterGraph(0); +VirtualDub.video.SetDepth(24,24); +VirtualDub.video.SetMode(3); +VirtualDub.video.SetFrameRate(0,1); +VirtualDub.video.SetIVTC(0,0,-1,0); +VirtualDub.video.SetRange(0,0); +VirtualDub.video.SetCompression(0x78766964,0,10000,0); +VirtualDub.video.SetCompData(512,"zAEAAAAAAAACAAAAAAk9AAAAgEABAAAAAAAAAAAAAAAAAAAAAAAAAJYAAAAyAAAA0EfIAQAAYAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAmpmZmZmZyT+amZmZmZnJPwAAAAAAAAAAAAAAAIACAADgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAZAAAAAAAAAABAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAwAAAAEAAAAAAAAAAAAAAFY6XGRpdngubG9nAGM6XHRlc3QuZGl2eABjOlxtdmluZm8uYmluAGM6XG5ld3JjLnR4dAA="); +VirtualDub.video.filters.Clear(); +VirtualDub.audio.filters.Clear(); +VirtualDub.subset.Delete(); diff --git a/Windows Scripts/DubMan Templates/VirtualDub DV to DIVX compression - pass 2 HQ.vcf b/Windows Scripts/DubMan Templates/VirtualDub DV to DIVX compression - pass 2 HQ.vcf new file mode 100755 index 0000000..de7b97a --- /dev/null +++ b/Windows Scripts/DubMan Templates/VirtualDub DV to DIVX compression - pass 2 HQ.vcf @@ -0,0 +1,18 @@ +VirtualDub.audio.SetSource(1); +VirtualDub.audio.SetMode(1); +VirtualDub.audio.SetInterleave(1,500,1,0,0); +VirtualDub.audio.SetClipMode(1,1); +VirtualDub.audio.SetConversion(0,0,0,0,0); +VirtualDub.audio.SetVolume(); +VirtualDub.audio.SetCompression(85,48000,2,0,16000,1,12,"AQACAAAAgAEBAHEF"); +VirtualDub.audio.EnableFilterGraph(0); +VirtualDub.video.SetDepth(24,24); +VirtualDub.video.SetMode(3); +VirtualDub.video.SetFrameRate(0,1); +VirtualDub.video.SetIVTC(0,0,-1,0); +VirtualDub.video.SetRange(0,0); +VirtualDub.video.SetCompression(0x78766964,0,10000,0); +VirtualDub.video.SetCompData(512,"zAEAAAAAAAADAAAAgI1bAAAAgEABAAAAAAAAAAAAAAAAAAAAAAAAAJYAAAAyAAAA0EfIAQAAYAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAmpmZmZmZyT+amZmZmZnJPwAAAAAAAAAAAAAAAIACAADgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAZAAAAAAAAAABAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAwAAAAEAAAAAAAAAAAAAAFY6XGRpdngubG9nAGM6XHRlc3QuZGl2eABjOlxtdmluZm8uYmluAGM6XG5ld3JjLnR4dAA="); +VirtualDub.video.filters.Clear(); +VirtualDub.audio.filters.Clear(); +VirtualDub.subset.Delete(); diff --git a/Windows Scripts/DubMan Templates/VirtualDub DV to DIVX compression - pass 2.vcf b/Windows Scripts/DubMan Templates/VirtualDub DV to DIVX compression - pass 2.vcf new file mode 100755 index 0000000..111719b --- /dev/null +++ b/Windows Scripts/DubMan Templates/VirtualDub DV to DIVX compression - pass 2.vcf @@ -0,0 +1,18 @@ +VirtualDub.audio.SetSource(1); +VirtualDub.audio.SetMode(1); +VirtualDub.audio.SetInterleave(1,500,1,0,0); +VirtualDub.audio.SetClipMode(1,1); +VirtualDub.audio.SetConversion(0,0,0,0,0); +VirtualDub.audio.SetVolume(); +VirtualDub.audio.SetCompression(85,48000,2,0,16000,1,12,"AQACAAAAgAEBAHEF"); +VirtualDub.audio.EnableFilterGraph(0); +VirtualDub.video.SetDepth(24,24); +VirtualDub.video.SetMode(3); +VirtualDub.video.SetFrameRate(0,1); +VirtualDub.video.SetIVTC(0,0,-1,0); +VirtualDub.video.SetRange(0,0); +VirtualDub.video.SetCompression(0x78766964,0,10000,0); +VirtualDub.video.SetCompData(512,"zAEAAAAAAAACAAAAAAk9AAAAgEABAAAAAAAAAAAAAAAAAAAAAAAAAJYAAAAyAAAA0EfIAQAAYAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAmpmZmZmZyT+amZmZmZnJPwAAAAAAAAAAAAAAAIACAADgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAZAAAAAAAAAABAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAwAAAAEAAAAAAAAAAAAAAFY6XGRpdngubG9nAGM6XHRlc3QuZGl2eABjOlxtdmluZm8uYmluAGM6XG5ld3JjLnR4dAA="); +VirtualDub.video.filters.Clear(); +VirtualDub.audio.filters.Clear(); +VirtualDub.subset.Delete(); diff --git a/Windows Scripts/DubMan Templates/VirtualDub DV to DIVX compression.vcf b/Windows Scripts/DubMan Templates/VirtualDub DV to DIVX compression.vcf new file mode 100755 index 0000000..a0c58f2 --- /dev/null +++ b/Windows Scripts/DubMan Templates/VirtualDub DV to DIVX compression.vcf @@ -0,0 +1,18 @@ +VirtualDub.audio.SetSource(1); +VirtualDub.audio.SetMode(1); +VirtualDub.audio.SetInterleave(1,500,1,0,0); +VirtualDub.audio.SetClipMode(1,1); +VirtualDub.audio.SetConversion(0,0,0,0,0); +VirtualDub.audio.SetVolume(); +VirtualDub.audio.SetCompression(85,48000,2,0,16000,1,12,"AQACAAAAgAEBAHEF"); +VirtualDub.audio.EnableFilterGraph(0); +VirtualDub.video.SetDepth(24,24); +VirtualDub.video.SetMode(3); +VirtualDub.video.SetFrameRate(0,1); +VirtualDub.video.SetIVTC(0,0,-1,0); +VirtualDub.video.SetRange(0,0); +VirtualDub.video.SetCompression(0x78766964,0,10000,0); +VirtualDub.video.SetCompData(319,"GAEAAGCuCgDQBwAACgAAABQAAAAsAQAADAAAAAIAAAAFAAAAAAAAACgAAAAAAAAAAAAAABQAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAyAAAAAAAAAAAAAAAAAACgmZnJPwAAAKCZmck/QAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAIACAADgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAD/////AQAAAGM6XGRpdngubG9nAGM6XHRlc3QuZGl2eABjOlxtdmluZm8uYmluAA=="); +VirtualDub.video.filters.Clear(); +VirtualDub.audio.filters.Clear(); +VirtualDub.subset.Delete(); diff --git a/Windows Scripts/TMPG Settings/DIVX to DVD .mcf b/Windows Scripts/TMPG Settings/DIVX to DVD .mcf new file mode 100755 index 0000000..0a2b7ef --- /dev/null +++ b/Windows Scripts/TMPG Settings/DIVX to DVD .mcf @@ -0,0 +1,141 @@ +object TMPEGConfigFile + MPEG.Text = '' + MPEG.WizardCategoryName = '' + MPEG.WizardSubFormatName = '' + MPEG.WizardCaption = '' + MPEG.WizardDescription = '' + MPEG.WizardTargetMedia = MPEGConfig_TargetMediaType_Unknown + MPEG.WizardAutoCalcVideoBitRate = False + MPEG.WizardAutoChooseList.EnableVideoSize = False + MPEG.WizardAutoChooseList.VideoSize = < + item + MinVideoBitRate = 2000000 + Width = 352 + Height = 480 + VideoEncodeMode = MPEGVideoEncoder_VideoEncodeMode_Interlace + FrameRate = 4 + AspectRatio = 2 + end + item + MinVideoBitRate = 4000000 + Width = 720 + Height = 480 + VideoEncodeMode = MPEGVideoEncoder_VideoEncodeMode_Interlace + FrameRate = 4 + AspectRatio = 2 + end> + MPEG.WizardAutoChooseList.EnableVideoGOP = False + MPEG.WizardAutoChooseList.VideoGOP = <> + MPEG.OutputStreamType = MPEG_OutputStreamType_System_VideoAudio + MPEG.OutputStreamType_ReadOnly = False + MPEG.Video.StreamType = MPEGVideoEncoder_StreamType_MPEG2 + MPEG.Video.StreamType_ReadOnly = False + MPEG.Video.Width = 720 + MPEG.Video.Width_ReadOnly = False + MPEG.Video.Height = 480 + MPEG.Video.Height_ReadOnly = False + MPEG.Video.YUVFormat = 1 + MPEG.Video.YUVFormat_ReadOnly = False + MPEG.Video.DC_prec = 2 + MPEG.Video.DC_prec_ReadOnly = False + MPEG.Video.VideoEncodeMode = MPEGVideoEncoder_VideoEncodeMode_Progressive + MPEG.Video.VideoEncodeMode_ReadOnly = False + MPEG.Video.FrameRate = 4 + MPEG.Video.FrameRate_ReadOnly = False + MPEG.Video.AspectRatio = 2 + MPEG.Video.AspectRatio_ReadOnly = False + MPEG.Video.RateControlMode = MPEGVideoEncoder_RateControlMode_VBR_Auto + MPEG.Video.RateControlMode_ReadOnly = False + MPEG.Video.MaxBitRate = 0 + MPEG.Video.MaxBitRate_ReadOnly = False + MPEG.Video.MinBitRate = 0 + MPEG.Video.MinBitRate_ReadOnly = False + MPEG.Video.MinAvgBitRate = 0 + MPEG.Video.MinAvgBitRate_ReadOnly = False + MPEG.Video.CBR_BitRate = 7000000 + MPEG.Video.VBR_MultipassVBRAlgorithm = MPEGVideoEncoder_MultipassVBRAlgorithm_2PASS + MPEG.Video.VBR_AvgBitRate = 7000000 + MPEG.Video.VBR_MaxBitRate = 8000000 + MPEG.Video.VBR_MinBitRate = 2000000 + MPEG.Video.VBR_MaxPassCount = 0 + MPEG.Video.VBR_Quality_P = 0 + MPEG.Video.VBR_Quality_B = 20 + MPEG.Video.VBR_EnablePadding = False + MPEG.Video.MVBR_MaxBitRate = 8000000 + MPEG.Video.MVBR_MinBitRate = 2000000 + MPEG.Video.MVBR_Quality_P = 0 + MPEG.Video.MVBR_Quality_B = 20 + MPEG.Video.MVBR_EnablePadding = False + MPEG.Video.AVBR_Quality = 100 + MPEG.Video.AVBR_MaxBitRate = 6000000 + MPEG.Video.AVBR_MinBitRate = 0 + MPEG.Video.AVBR_EnablePadding = False + MPEG.Video.CQ_Quality = 65 + MPEG.Video.CQ_Quality_P = 0 + MPEG.Video.CQ_Quality_B = 20 + MPEG.Video.CQ_MaxBitRate = 8000000 + MPEG.Video.CQ_MinBitRate = 2000000 + MPEG.Video.CQ_EnablePadding = False + MPEG.Video.VBVBufferSize = 229376 + MPEG.Video.VBVBufferSize_ReadOnly = False + MPEG.Video.GOP_SeqHeaderInterval = 1 + MPEG.Video.GOP_SeqHeaderInterval_ReadOnly = False + MPEG.Video.GOP_I_FrameCount = 1 + MPEG.Video.GOP_I_FrameCount_ReadOnly = False + MPEG.Video.GOP_P_FrameCount = 4 + MPEG.Video.GOP_P_FrameCount_ReadOnly = False + MPEG.Video.GOP_B_FrameCount = 1 + MPEG.Video.GOP_B_FrameCount_ReadOnly = False + MPEG.Video.GOP_BitStreamForEdit = False + MPEG.Video.GOP_BitStreamForEdit_ReadOnly = False + MPEG.Video.GOP_MaxFrameCount = 18 + MPEG.Video.GOP_MaxFrameCount_ReadOnly = False + MPEG.Video.QuantizeMatrix_Intra_ReadOnly = False + MPEG.Video.QuantizeMatrix_NonIntra_ReadOnly = False + MPEG.Video.Profile = 4 + MPEG.Video.Profile_ReadOnly = False + MPEG.Video.Level = 8 + MPEG.Video.Level_ReadOnly = False + MPEG.Video.VideoFormat = 2 + MPEG.Video.VideoFormat_ReadOnly = False + MPEG.Video.DisplayWidth = 0 + MPEG.Video.DisplayWidth_ReadOnly = False + MPEG.Video.DisplayHeight = 0 + MPEG.Video.DisplayHeight_ReadOnly = False + MPEG.Video.MotionSearchSpeed = MPEGVideoEncoder_MotionSearchSpeed_Slow + MPEG.Video.MotionSearch_AlwaysHalfPel = False + MPEG.Video.UseFloatDCT = False + MPEG.Video.QuantizeMode = False + MPEG.Video.QuantizeModeVal_Intra = 35 + MPEG.Video.QuantizeModeVal_NonIntra = 35 + MPEG.Video.YUVBasicYCbCr = False + MPEG.Video.QuantizeMatrix_Intra = { + 081013161A1B1D22101016181B1D222513161A1B1D22222616161A1B1D222528 + 161A1B1D202328301A1B1D202328303A1A1B1D22262E38451B1D23262E384553} + MPEG.Video.QuantizeMatrix_NonIntra = { + 1011121314151617111213141516171812131415161718191314151617181A1B + 14151617191A1B1C151617181A1B1C1E1617181A1B1C1E1F1718191B1C1E1F21} + MPEG.Audio.StreamType = MPEGAudioEncoder_StreamType_MPEG1_Layer2 + MPEG.Audio.StreamType_ReadOnly = False + MPEG.Audio.SamplingFrequency = 48000 + MPEG.Audio.SamplingFrequency_ReadOnly = False + MPEG.Audio.ChannelMode = 0 + MPEG.Audio.ChannelMode_ReadOnly = False + MPEG.Audio.CantUseMono = False + MPEG.Audio.BitRate = 256000 + MPEG.Audio.BitRate_ReadOnly = False + MPEG.Audio.CalcCRC = False + MPEG.Audio.CalcCRC_ReadOnly = False + MPEG.Audio.OriginalFlag = False + MPEG.Audio.OriginalFlag_ReadOnly = False + MPEG.Audio.CopyrightFlag = False + MPEG.Audio.CopyrightFlag_ReadOnly = False + MPEG.Audio.PrivateFlag = False + MPEG.Audio.PrivateFlag_ReadOnly = False + MPEG.Audio.EmphasisType = 0 + MPEG.Audio.EmphasisType_ReadOnly = False + MPEG.System.StreamType = MPEGSystemEncoder_StreamType_MPEG2_Program + MPEG.System.StreamType_ReadOnly = False + MPEG.System.EnableCommentText = False + MPEG.System.CommentText = '' +end diff --git a/Windows Scripts/TMPG Settings/DV to DVD 2pass VBR.mcf b/Windows Scripts/TMPG Settings/DV to DVD 2pass VBR.mcf new file mode 100755 index 0000000..a540cce --- /dev/null +++ b/Windows Scripts/TMPG Settings/DV to DVD 2pass VBR.mcf @@ -0,0 +1,125 @@ +object TMPEGConfigFile + MPEG.Text = '' + MPEG.WizardCategoryName = '' + MPEG.WizardSubFormatName = '' + MPEG.WizardCaption = '' + MPEG.WizardDescription = '' + MPEG.WizardTargetMedia = MPEGConfig_TargetMediaType_Unknown + MPEG.WizardAutoCalcVideoBitRate = False + MPEG.WizardAutoChooseList.EnableVideoSize = False + MPEG.WizardAutoChooseList.VideoSize = <> + MPEG.WizardAutoChooseList.EnableVideoGOP = False + MPEG.WizardAutoChooseList.VideoGOP = <> + MPEG.OutputStreamType = MPEG_OutputStreamType_VideoAudio + MPEG.OutputStreamType_ReadOnly = False + MPEG.Video.StreamType = MPEGVideoEncoder_StreamType_MPEG2 + MPEG.Video.StreamType_ReadOnly = False + MPEG.Video.Width = 720 + MPEG.Video.Width_ReadOnly = False + MPEG.Video.Height = 480 + MPEG.Video.Height_ReadOnly = False + MPEG.Video.YUVFormat = 1 + MPEG.Video.YUVFormat_ReadOnly = False + MPEG.Video.DC_prec = 2 + MPEG.Video.DC_prec_ReadOnly = False + MPEG.Video.VideoEncodeMode = MPEGVideoEncoder_VideoEncodeMode_Interlace + MPEG.Video.VideoEncodeMode_ReadOnly = False + MPEG.Video.FrameRate = 4 + MPEG.Video.FrameRate_ReadOnly = False + MPEG.Video.AspectRatio = 2 + MPEG.Video.AspectRatio_ReadOnly = False + MPEG.Video.RateControlMode = MPEGVideoEncoder_RateControlMode_VBR_2PASS + MPEG.Video.RateControlMode_ReadOnly = False + MPEG.Video.MaxBitRate = 0 + MPEG.Video.MaxBitRate_ReadOnly = False + MPEG.Video.MinBitRate = 0 + MPEG.Video.MinBitRate_ReadOnly = False + MPEG.Video.MinAvgBitRate = 0 + MPEG.Video.MinAvgBitRate_ReadOnly = False + MPEG.Video.CBR_BitRate = 7000000 + MPEG.Video.VBR_MultipassVBRAlgorithm = MPEGVideoEncoder_MultipassVBRAlgorithm_2PASS + MPEG.Video.VBR_AvgBitRate = 3000000 + MPEG.Video.VBR_MaxBitRate = 4500000 + MPEG.Video.VBR_MinBitRate = 2000000 + MPEG.Video.VBR_MaxPassCount = 0 + MPEG.Video.VBR_Quality_P = 0 + MPEG.Video.VBR_Quality_B = 20 + MPEG.Video.VBR_EnablePadding = False + MPEG.Video.MVBR_MaxBitRate = 8000000 + MPEG.Video.MVBR_MinBitRate = 2000000 + MPEG.Video.MVBR_Quality_P = 0 + MPEG.Video.MVBR_Quality_B = 20 + MPEG.Video.MVBR_EnablePadding = False + MPEG.Video.AVBR_Quality = 95 + MPEG.Video.AVBR_MaxBitRate = 4500000 + MPEG.Video.AVBR_MinBitRate = 2000000 + MPEG.Video.AVBR_EnablePadding = False + MPEG.Video.CQ_Quality = 65 + MPEG.Video.CQ_Quality_P = 0 + MPEG.Video.CQ_Quality_B = 20 + MPEG.Video.CQ_MaxBitRate = 8000000 + MPEG.Video.CQ_MinBitRate = 2000000 + MPEG.Video.CQ_EnablePadding = False + MPEG.Video.VBVBufferSize = 229376 + MPEG.Video.VBVBufferSize_ReadOnly = False + MPEG.Video.GOP_SeqHeaderInterval = 1 + MPEG.Video.GOP_SeqHeaderInterval_ReadOnly = False + MPEG.Video.GOP_I_FrameCount = 1 + MPEG.Video.GOP_I_FrameCount_ReadOnly = False + MPEG.Video.GOP_P_FrameCount = 5 + MPEG.Video.GOP_P_FrameCount_ReadOnly = False + MPEG.Video.GOP_B_FrameCount = 2 + MPEG.Video.GOP_B_FrameCount_ReadOnly = False + MPEG.Video.GOP_BitStreamForEdit = False + MPEG.Video.GOP_BitStreamForEdit_ReadOnly = False + MPEG.Video.GOP_MaxFrameCount = 18 + MPEG.Video.GOP_MaxFrameCount_ReadOnly = False + MPEG.Video.QuantizeMatrix_Intra_ReadOnly = False + MPEG.Video.QuantizeMatrix_NonIntra_ReadOnly = False + MPEG.Video.Profile = 4 + MPEG.Video.Profile_ReadOnly = False + MPEG.Video.Level = 8 + MPEG.Video.Level_ReadOnly = False + MPEG.Video.VideoFormat = 2 + MPEG.Video.VideoFormat_ReadOnly = False + MPEG.Video.DisplayWidth = 0 + MPEG.Video.DisplayWidth_ReadOnly = False + MPEG.Video.DisplayHeight = 0 + MPEG.Video.DisplayHeight_ReadOnly = False + MPEG.Video.MotionSearchSpeed = MPEGVideoEncoder_MotionSearchSpeed_Slow + MPEG.Video.MotionSearch_AlwaysHalfPel = False + MPEG.Video.UseFloatDCT = False + MPEG.Video.QuantizeMode = False + MPEG.Video.QuantizeModeVal_Intra = 35 + MPEG.Video.QuantizeModeVal_NonIntra = 35 + MPEG.Video.YUVBasicYCbCr = False + MPEG.Video.QuantizeMatrix_Intra = { + 081013161A1B1D22101016181B1D222513161A1B1D22222616161A1B1D222528 + 161A1B1D202328301A1B1D202328303A1A1B1D22262E38451B1D23262E384553} + MPEG.Video.QuantizeMatrix_NonIntra = { + 1011121314151617111213141516171812131415161718191314151617181A1B + 14151617191A1B1C151617181A1B1C1E1617181A1B1C1E1F1718191B1C1E1F21} + MPEG.Audio.StreamType = MPEGAudioEncoder_StreamType_MPEG1_Layer2 + MPEG.Audio.StreamType_ReadOnly = False + MPEG.Audio.SamplingFrequency = 48000 + MPEG.Audio.SamplingFrequency_ReadOnly = False + MPEG.Audio.ChannelMode = 0 + MPEG.Audio.ChannelMode_ReadOnly = False + MPEG.Audio.CantUseMono = False + MPEG.Audio.BitRate = 256000 + MPEG.Audio.BitRate_ReadOnly = False + MPEG.Audio.CalcCRC = False + MPEG.Audio.CalcCRC_ReadOnly = False + MPEG.Audio.OriginalFlag = False + MPEG.Audio.OriginalFlag_ReadOnly = False + MPEG.Audio.CopyrightFlag = False + MPEG.Audio.CopyrightFlag_ReadOnly = False + MPEG.Audio.PrivateFlag = False + MPEG.Audio.PrivateFlag_ReadOnly = False + MPEG.Audio.EmphasisType = 0 + MPEG.Audio.EmphasisType_ReadOnly = False + MPEG.System.StreamType = MPEGSystemEncoder_StreamType_MPEG2_Program + MPEG.System.StreamType_ReadOnly = False + MPEG.System.EnableCommentText = False + MPEG.System.CommentText = '' +end diff --git a/Windows Scripts/TMPG Settings/DV to DVD CBR.mcf b/Windows Scripts/TMPG Settings/DV to DVD CBR.mcf new file mode 100755 index 0000000..84dd0c3 --- /dev/null +++ b/Windows Scripts/TMPG Settings/DV to DVD CBR.mcf @@ -0,0 +1,125 @@ +object TMPEGConfigFile + MPEG.Text = '' + MPEG.WizardCategoryName = '' + MPEG.WizardSubFormatName = '' + MPEG.WizardCaption = '' + MPEG.WizardDescription = '' + MPEG.WizardTargetMedia = MPEGConfig_TargetMediaType_Unknown + MPEG.WizardAutoCalcVideoBitRate = False + MPEG.WizardAutoChooseList.EnableVideoSize = False + MPEG.WizardAutoChooseList.VideoSize = <> + MPEG.WizardAutoChooseList.EnableVideoGOP = False + MPEG.WizardAutoChooseList.VideoGOP = <> + MPEG.OutputStreamType = MPEG_OutputStreamType_VideoAudio + MPEG.OutputStreamType_ReadOnly = False + MPEG.Video.StreamType = MPEGVideoEncoder_StreamType_MPEG2 + MPEG.Video.StreamType_ReadOnly = False + MPEG.Video.Width = 720 + MPEG.Video.Width_ReadOnly = False + MPEG.Video.Height = 480 + MPEG.Video.Height_ReadOnly = False + MPEG.Video.YUVFormat = 1 + MPEG.Video.YUVFormat_ReadOnly = False + MPEG.Video.DC_prec = 2 + MPEG.Video.DC_prec_ReadOnly = False + MPEG.Video.VideoEncodeMode = MPEGVideoEncoder_VideoEncodeMode_Interlace + MPEG.Video.VideoEncodeMode_ReadOnly = False + MPEG.Video.FrameRate = 4 + MPEG.Video.FrameRate_ReadOnly = False + MPEG.Video.AspectRatio = 2 + MPEG.Video.AspectRatio_ReadOnly = False + MPEG.Video.RateControlMode = MPEGVideoEncoder_RateControlMode_CBR + MPEG.Video.RateControlMode_ReadOnly = False + MPEG.Video.MaxBitRate = 0 + MPEG.Video.MaxBitRate_ReadOnly = False + MPEG.Video.MinBitRate = 0 + MPEG.Video.MinBitRate_ReadOnly = False + MPEG.Video.MinAvgBitRate = 0 + MPEG.Video.MinAvgBitRate_ReadOnly = False + MPEG.Video.CBR_BitRate = 4500000 + MPEG.Video.VBR_MultipassVBRAlgorithm = MPEGVideoEncoder_MultipassVBRAlgorithm_2PASS + MPEG.Video.VBR_AvgBitRate = 3000000 + MPEG.Video.VBR_MaxBitRate = 4500000 + MPEG.Video.VBR_MinBitRate = 2000000 + MPEG.Video.VBR_MaxPassCount = 0 + MPEG.Video.VBR_Quality_P = 0 + MPEG.Video.VBR_Quality_B = 20 + MPEG.Video.VBR_EnablePadding = False + MPEG.Video.MVBR_MaxBitRate = 8000000 + MPEG.Video.MVBR_MinBitRate = 2000000 + MPEG.Video.MVBR_Quality_P = 0 + MPEG.Video.MVBR_Quality_B = 20 + MPEG.Video.MVBR_EnablePadding = False + MPEG.Video.AVBR_Quality = 95 + MPEG.Video.AVBR_MaxBitRate = 4500000 + MPEG.Video.AVBR_MinBitRate = 2000000 + MPEG.Video.AVBR_EnablePadding = False + MPEG.Video.CQ_Quality = 95 + MPEG.Video.CQ_Quality_P = 0 + MPEG.Video.CQ_Quality_B = 20 + MPEG.Video.CQ_MaxBitRate = 4500000 + MPEG.Video.CQ_MinBitRate = 2000000 + MPEG.Video.CQ_EnablePadding = False + MPEG.Video.VBVBufferSize = 229376 + MPEG.Video.VBVBufferSize_ReadOnly = False + MPEG.Video.GOP_SeqHeaderInterval = 1 + MPEG.Video.GOP_SeqHeaderInterval_ReadOnly = False + MPEG.Video.GOP_I_FrameCount = 1 + MPEG.Video.GOP_I_FrameCount_ReadOnly = False + MPEG.Video.GOP_P_FrameCount = 5 + MPEG.Video.GOP_P_FrameCount_ReadOnly = False + MPEG.Video.GOP_B_FrameCount = 2 + MPEG.Video.GOP_B_FrameCount_ReadOnly = False + MPEG.Video.GOP_BitStreamForEdit = False + MPEG.Video.GOP_BitStreamForEdit_ReadOnly = False + MPEG.Video.GOP_MaxFrameCount = 18 + MPEG.Video.GOP_MaxFrameCount_ReadOnly = False + MPEG.Video.QuantizeMatrix_Intra_ReadOnly = False + MPEG.Video.QuantizeMatrix_NonIntra_ReadOnly = False + MPEG.Video.Profile = 4 + MPEG.Video.Profile_ReadOnly = False + MPEG.Video.Level = 8 + MPEG.Video.Level_ReadOnly = False + MPEG.Video.VideoFormat = 2 + MPEG.Video.VideoFormat_ReadOnly = False + MPEG.Video.DisplayWidth = 0 + MPEG.Video.DisplayWidth_ReadOnly = False + MPEG.Video.DisplayHeight = 0 + MPEG.Video.DisplayHeight_ReadOnly = False + MPEG.Video.MotionSearchSpeed = MPEGVideoEncoder_MotionSearchSpeed_Slow + MPEG.Video.MotionSearch_AlwaysHalfPel = False + MPEG.Video.UseFloatDCT = False + MPEG.Video.QuantizeMode = False + MPEG.Video.QuantizeModeVal_Intra = 35 + MPEG.Video.QuantizeModeVal_NonIntra = 35 + MPEG.Video.YUVBasicYCbCr = False + MPEG.Video.QuantizeMatrix_Intra = { + 081013161A1B1D22101016181B1D222513161A1B1D22222616161A1B1D222528 + 161A1B1D202328301A1B1D202328303A1A1B1D22262E38451B1D23262E384553} + MPEG.Video.QuantizeMatrix_NonIntra = { + 1011121314151617111213141516171812131415161718191314151617181A1B + 14151617191A1B1C151617181A1B1C1E1617181A1B1C1E1F1718191B1C1E1F21} + MPEG.Audio.StreamType = MPEGAudioEncoder_StreamType_MPEG1_Layer2 + MPEG.Audio.StreamType_ReadOnly = False + MPEG.Audio.SamplingFrequency = 48000 + MPEG.Audio.SamplingFrequency_ReadOnly = False + MPEG.Audio.ChannelMode = 0 + MPEG.Audio.ChannelMode_ReadOnly = False + MPEG.Audio.CantUseMono = False + MPEG.Audio.BitRate = 256000 + MPEG.Audio.BitRate_ReadOnly = False + MPEG.Audio.CalcCRC = False + MPEG.Audio.CalcCRC_ReadOnly = False + MPEG.Audio.OriginalFlag = False + MPEG.Audio.OriginalFlag_ReadOnly = False + MPEG.Audio.CopyrightFlag = False + MPEG.Audio.CopyrightFlag_ReadOnly = False + MPEG.Audio.PrivateFlag = False + MPEG.Audio.PrivateFlag_ReadOnly = False + MPEG.Audio.EmphasisType = 0 + MPEG.Audio.EmphasisType_ReadOnly = False + MPEG.System.StreamType = MPEGSystemEncoder_StreamType_MPEG2_Program + MPEG.System.StreamType_ReadOnly = False + MPEG.System.EnableCommentText = False + MPEG.System.CommentText = '' +end diff --git a/Windows Scripts/TMPG Settings/DV to DVD CQ.mcf b/Windows Scripts/TMPG Settings/DV to DVD CQ.mcf new file mode 100755 index 0000000..9a54e1a --- /dev/null +++ b/Windows Scripts/TMPG Settings/DV to DVD CQ.mcf @@ -0,0 +1,125 @@ +object TMPEGConfigFile + MPEG.Text = '' + MPEG.WizardCategoryName = '' + MPEG.WizardSubFormatName = '' + MPEG.WizardCaption = '' + MPEG.WizardDescription = '' + MPEG.WizardTargetMedia = MPEGConfig_TargetMediaType_Unknown + MPEG.WizardAutoCalcVideoBitRate = False + MPEG.WizardAutoChooseList.EnableVideoSize = False + MPEG.WizardAutoChooseList.VideoSize = <> + MPEG.WizardAutoChooseList.EnableVideoGOP = False + MPEG.WizardAutoChooseList.VideoGOP = <> + MPEG.OutputStreamType = MPEG_OutputStreamType_VideoAudio + MPEG.OutputStreamType_ReadOnly = False + MPEG.Video.StreamType = MPEGVideoEncoder_StreamType_MPEG2 + MPEG.Video.StreamType_ReadOnly = False + MPEG.Video.Width = 720 + MPEG.Video.Width_ReadOnly = False + MPEG.Video.Height = 480 + MPEG.Video.Height_ReadOnly = False + MPEG.Video.YUVFormat = 1 + MPEG.Video.YUVFormat_ReadOnly = False + MPEG.Video.DC_prec = 2 + MPEG.Video.DC_prec_ReadOnly = False + MPEG.Video.VideoEncodeMode = MPEGVideoEncoder_VideoEncodeMode_Interlace + MPEG.Video.VideoEncodeMode_ReadOnly = False + MPEG.Video.FrameRate = 4 + MPEG.Video.FrameRate_ReadOnly = False + MPEG.Video.AspectRatio = 2 + MPEG.Video.AspectRatio_ReadOnly = False + MPEG.Video.RateControlMode = MPEGVideoEncoder_RateControlMode_CQ + MPEG.Video.RateControlMode_ReadOnly = False + MPEG.Video.MaxBitRate = 0 + MPEG.Video.MaxBitRate_ReadOnly = False + MPEG.Video.MinBitRate = 0 + MPEG.Video.MinBitRate_ReadOnly = False + MPEG.Video.MinAvgBitRate = 0 + MPEG.Video.MinAvgBitRate_ReadOnly = False + MPEG.Video.CBR_BitRate = 7000000 + MPEG.Video.VBR_MultipassVBRAlgorithm = MPEGVideoEncoder_MultipassVBRAlgorithm_2PASS + MPEG.Video.VBR_AvgBitRate = 3000000 + MPEG.Video.VBR_MaxBitRate = 4500000 + MPEG.Video.VBR_MinBitRate = 2000000 + MPEG.Video.VBR_MaxPassCount = 0 + MPEG.Video.VBR_Quality_P = 0 + MPEG.Video.VBR_Quality_B = 20 + MPEG.Video.VBR_EnablePadding = False + MPEG.Video.MVBR_MaxBitRate = 8000000 + MPEG.Video.MVBR_MinBitRate = 2000000 + MPEG.Video.MVBR_Quality_P = 0 + MPEG.Video.MVBR_Quality_B = 20 + MPEG.Video.MVBR_EnablePadding = False + MPEG.Video.AVBR_Quality = 95 + MPEG.Video.AVBR_MaxBitRate = 4500000 + MPEG.Video.AVBR_MinBitRate = 2000000 + MPEG.Video.AVBR_EnablePadding = False + MPEG.Video.CQ_Quality = 95 + MPEG.Video.CQ_Quality_P = 0 + MPEG.Video.CQ_Quality_B = 20 + MPEG.Video.CQ_MaxBitRate = 4500000 + MPEG.Video.CQ_MinBitRate = 2000000 + MPEG.Video.CQ_EnablePadding = False + MPEG.Video.VBVBufferSize = 229376 + MPEG.Video.VBVBufferSize_ReadOnly = False + MPEG.Video.GOP_SeqHeaderInterval = 1 + MPEG.Video.GOP_SeqHeaderInterval_ReadOnly = False + MPEG.Video.GOP_I_FrameCount = 1 + MPEG.Video.GOP_I_FrameCount_ReadOnly = False + MPEG.Video.GOP_P_FrameCount = 5 + MPEG.Video.GOP_P_FrameCount_ReadOnly = False + MPEG.Video.GOP_B_FrameCount = 2 + MPEG.Video.GOP_B_FrameCount_ReadOnly = False + MPEG.Video.GOP_BitStreamForEdit = False + MPEG.Video.GOP_BitStreamForEdit_ReadOnly = False + MPEG.Video.GOP_MaxFrameCount = 18 + MPEG.Video.GOP_MaxFrameCount_ReadOnly = False + MPEG.Video.QuantizeMatrix_Intra_ReadOnly = False + MPEG.Video.QuantizeMatrix_NonIntra_ReadOnly = False + MPEG.Video.Profile = 4 + MPEG.Video.Profile_ReadOnly = False + MPEG.Video.Level = 8 + MPEG.Video.Level_ReadOnly = False + MPEG.Video.VideoFormat = 2 + MPEG.Video.VideoFormat_ReadOnly = False + MPEG.Video.DisplayWidth = 0 + MPEG.Video.DisplayWidth_ReadOnly = False + MPEG.Video.DisplayHeight = 0 + MPEG.Video.DisplayHeight_ReadOnly = False + MPEG.Video.MotionSearchSpeed = MPEGVideoEncoder_MotionSearchSpeed_Slow + MPEG.Video.MotionSearch_AlwaysHalfPel = False + MPEG.Video.UseFloatDCT = False + MPEG.Video.QuantizeMode = False + MPEG.Video.QuantizeModeVal_Intra = 35 + MPEG.Video.QuantizeModeVal_NonIntra = 35 + MPEG.Video.YUVBasicYCbCr = False + MPEG.Video.QuantizeMatrix_Intra = { + 081013161A1B1D22101016181B1D222513161A1B1D22222616161A1B1D222528 + 161A1B1D202328301A1B1D202328303A1A1B1D22262E38451B1D23262E384553} + MPEG.Video.QuantizeMatrix_NonIntra = { + 1011121314151617111213141516171812131415161718191314151617181A1B + 14151617191A1B1C151617181A1B1C1E1617181A1B1C1E1F1718191B1C1E1F21} + MPEG.Audio.StreamType = MPEGAudioEncoder_StreamType_MPEG1_Layer2 + MPEG.Audio.StreamType_ReadOnly = False + MPEG.Audio.SamplingFrequency = 48000 + MPEG.Audio.SamplingFrequency_ReadOnly = False + MPEG.Audio.ChannelMode = 0 + MPEG.Audio.ChannelMode_ReadOnly = False + MPEG.Audio.CantUseMono = False + MPEG.Audio.BitRate = 256000 + MPEG.Audio.BitRate_ReadOnly = False + MPEG.Audio.CalcCRC = False + MPEG.Audio.CalcCRC_ReadOnly = False + MPEG.Audio.OriginalFlag = False + MPEG.Audio.OriginalFlag_ReadOnly = False + MPEG.Audio.CopyrightFlag = False + MPEG.Audio.CopyrightFlag_ReadOnly = False + MPEG.Audio.PrivateFlag = False + MPEG.Audio.PrivateFlag_ReadOnly = False + MPEG.Audio.EmphasisType = 0 + MPEG.Audio.EmphasisType_ReadOnly = False + MPEG.System.StreamType = MPEGSystemEncoder_StreamType_MPEG2_Program + MPEG.System.StreamType_ReadOnly = False + MPEG.System.EnableCommentText = False + MPEG.System.CommentText = '' +end diff --git a/Windows Scripts/TMPG Settings/DV to DVD wizard.mcf b/Windows Scripts/TMPG Settings/DV to DVD wizard.mcf new file mode 100755 index 0000000..ddf55d2 --- /dev/null +++ b/Windows Scripts/TMPG Settings/DV to DVD wizard.mcf @@ -0,0 +1,125 @@ +object TMPEGConfigFile + MPEG.Text = '' + MPEG.WizardCategoryName = '' + MPEG.WizardSubFormatName = '' + MPEG.WizardCaption = '' + MPEG.WizardDescription = '' + MPEG.WizardTargetMedia = MPEGConfig_TargetMediaType_Unknown + MPEG.WizardAutoCalcVideoBitRate = False + MPEG.WizardAutoChooseList.EnableVideoSize = False + MPEG.WizardAutoChooseList.VideoSize = <> + MPEG.WizardAutoChooseList.EnableVideoGOP = False + MPEG.WizardAutoChooseList.VideoGOP = <> + MPEG.OutputStreamType = MPEG_OutputStreamType_VideoAudio + MPEG.OutputStreamType_ReadOnly = False + MPEG.Video.StreamType = MPEGVideoEncoder_StreamType_MPEG2 + MPEG.Video.StreamType_ReadOnly = False + MPEG.Video.Width = 720 + MPEG.Video.Width_ReadOnly = False + MPEG.Video.Height = 480 + MPEG.Video.Height_ReadOnly = False + MPEG.Video.YUVFormat = 1 + MPEG.Video.YUVFormat_ReadOnly = False + MPEG.Video.DC_prec = 2 + MPEG.Video.DC_prec_ReadOnly = False + MPEG.Video.VideoEncodeMode = MPEGVideoEncoder_VideoEncodeMode_Interlace + MPEG.Video.VideoEncodeMode_ReadOnly = False + MPEG.Video.FrameRate = 4 + MPEG.Video.FrameRate_ReadOnly = False + MPEG.Video.AspectRatio = 2 + MPEG.Video.AspectRatio_ReadOnly = False + MPEG.Video.RateControlMode = MPEGVideoEncoder_RateControlMode_VBR_2PASS + MPEG.Video.RateControlMode_ReadOnly = False + MPEG.Video.MaxBitRate = 0 + MPEG.Video.MaxBitRate_ReadOnly = False + MPEG.Video.MinBitRate = 0 + MPEG.Video.MinBitRate_ReadOnly = False + MPEG.Video.MinAvgBitRate = 0 + MPEG.Video.MinAvgBitRate_ReadOnly = False + MPEG.Video.CBR_BitRate = 4500000 + MPEG.Video.VBR_MultipassVBRAlgorithm = MPEGVideoEncoder_MultipassVBRAlgorithm_2PASS + MPEG.Video.VBR_AvgBitRate = 6000000 + MPEG.Video.VBR_MaxBitRate = 7000000 + MPEG.Video.VBR_MinBitRate = 0 + MPEG.Video.VBR_MaxPassCount = 0 + MPEG.Video.VBR_Quality_P = 0 + MPEG.Video.VBR_Quality_B = 20 + MPEG.Video.VBR_EnablePadding = False + MPEG.Video.MVBR_MaxBitRate = 8000000 + MPEG.Video.MVBR_MinBitRate = 2000000 + MPEG.Video.MVBR_Quality_P = 0 + MPEG.Video.MVBR_Quality_B = 20 + MPEG.Video.MVBR_EnablePadding = False + MPEG.Video.AVBR_Quality = 95 + MPEG.Video.AVBR_MaxBitRate = 4500000 + MPEG.Video.AVBR_MinBitRate = 2000000 + MPEG.Video.AVBR_EnablePadding = False + MPEG.Video.CQ_Quality = 95 + MPEG.Video.CQ_Quality_P = 0 + MPEG.Video.CQ_Quality_B = 20 + MPEG.Video.CQ_MaxBitRate = 4500000 + MPEG.Video.CQ_MinBitRate = 2000000 + MPEG.Video.CQ_EnablePadding = False + MPEG.Video.VBVBufferSize = 229376 + MPEG.Video.VBVBufferSize_ReadOnly = False + MPEG.Video.GOP_SeqHeaderInterval = 1 + MPEG.Video.GOP_SeqHeaderInterval_ReadOnly = False + MPEG.Video.GOP_I_FrameCount = 1 + MPEG.Video.GOP_I_FrameCount_ReadOnly = False + MPEG.Video.GOP_P_FrameCount = 4 + MPEG.Video.GOP_P_FrameCount_ReadOnly = False + MPEG.Video.GOP_B_FrameCount = 1 + MPEG.Video.GOP_B_FrameCount_ReadOnly = False + MPEG.Video.GOP_BitStreamForEdit = False + MPEG.Video.GOP_BitStreamForEdit_ReadOnly = False + MPEG.Video.GOP_MaxFrameCount = 18 + MPEG.Video.GOP_MaxFrameCount_ReadOnly = False + MPEG.Video.QuantizeMatrix_Intra_ReadOnly = False + MPEG.Video.QuantizeMatrix_NonIntra_ReadOnly = False + MPEG.Video.Profile = 4 + MPEG.Video.Profile_ReadOnly = False + MPEG.Video.Level = 8 + MPEG.Video.Level_ReadOnly = False + MPEG.Video.VideoFormat = 2 + MPEG.Video.VideoFormat_ReadOnly = False + MPEG.Video.DisplayWidth = 0 + MPEG.Video.DisplayWidth_ReadOnly = False + MPEG.Video.DisplayHeight = 0 + MPEG.Video.DisplayHeight_ReadOnly = False + MPEG.Video.MotionSearchSpeed = MPEGVideoEncoder_MotionSearchSpeed_Slow + MPEG.Video.MotionSearch_AlwaysHalfPel = True + MPEG.Video.UseFloatDCT = False + MPEG.Video.QuantizeMode = False + MPEG.Video.QuantizeModeVal_Intra = 35 + MPEG.Video.QuantizeModeVal_NonIntra = 35 + MPEG.Video.YUVBasicYCbCr = True + MPEG.Video.QuantizeMatrix_Intra = { + 081013161A1B1D22101016181B1D222513161A1B1D22222616161A1B1D222528 + 161A1B1D202328301A1B1D202328303A1A1B1D22262E38451B1D23262E384553} + MPEG.Video.QuantizeMatrix_NonIntra = { + 1011121314151617111213141516171812131415161718191314151617181A1B + 14151617191A1B1C151617181A1B1C1E1617181A1B1C1E1F1718191B1C1E1F21} + MPEG.Audio.StreamType = MPEGAudioEncoder_StreamType_MPEG1_Layer2 + MPEG.Audio.StreamType_ReadOnly = False + MPEG.Audio.SamplingFrequency = 48000 + MPEG.Audio.SamplingFrequency_ReadOnly = False + MPEG.Audio.ChannelMode = 0 + MPEG.Audio.ChannelMode_ReadOnly = False + MPEG.Audio.CantUseMono = False + MPEG.Audio.BitRate = 256000 + MPEG.Audio.BitRate_ReadOnly = False + MPEG.Audio.CalcCRC = False + MPEG.Audio.CalcCRC_ReadOnly = False + MPEG.Audio.OriginalFlag = False + MPEG.Audio.OriginalFlag_ReadOnly = False + MPEG.Audio.CopyrightFlag = False + MPEG.Audio.CopyrightFlag_ReadOnly = False + MPEG.Audio.PrivateFlag = False + MPEG.Audio.PrivateFlag_ReadOnly = False + MPEG.Audio.EmphasisType = 0 + MPEG.Audio.EmphasisType_ReadOnly = False + MPEG.System.StreamType = MPEGSystemEncoder_StreamType_MPEG2_Program + MPEG.System.StreamType_ReadOnly = False + MPEG.System.EnableCommentText = False + MPEG.System.CommentText = '' +end diff --git a/Windows Scripts/TMPG Settings/DV to DVD.mcf b/Windows Scripts/TMPG Settings/DV to DVD.mcf new file mode 100755 index 0000000..d70d1f3 --- /dev/null +++ b/Windows Scripts/TMPG Settings/DV to DVD.mcf @@ -0,0 +1,125 @@ +object TMPEGConfigFile + MPEG.Text = '' + MPEG.WizardCategoryName = '' + MPEG.WizardSubFormatName = '' + MPEG.WizardCaption = '' + MPEG.WizardDescription = '' + MPEG.WizardTargetMedia = MPEGConfig_TargetMediaType_Unknown + MPEG.WizardAutoCalcVideoBitRate = False + MPEG.WizardAutoChooseList.EnableVideoSize = False + MPEG.WizardAutoChooseList.VideoSize = <> + MPEG.WizardAutoChooseList.EnableVideoGOP = False + MPEG.WizardAutoChooseList.VideoGOP = <> + MPEG.OutputStreamType = MPEG_OutputStreamType_VideoAudio + MPEG.OutputStreamType_ReadOnly = False + MPEG.Video.StreamType = MPEGVideoEncoder_StreamType_MPEG2 + MPEG.Video.StreamType_ReadOnly = False + MPEG.Video.Width = 720 + MPEG.Video.Width_ReadOnly = False + MPEG.Video.Height = 480 + MPEG.Video.Height_ReadOnly = False + MPEG.Video.YUVFormat = 1 + MPEG.Video.YUVFormat_ReadOnly = False + MPEG.Video.DC_prec = 2 + MPEG.Video.DC_prec_ReadOnly = False + MPEG.Video.VideoEncodeMode = MPEGVideoEncoder_VideoEncodeMode_Interlace + MPEG.Video.VideoEncodeMode_ReadOnly = False + MPEG.Video.FrameRate = 4 + MPEG.Video.FrameRate_ReadOnly = False + MPEG.Video.AspectRatio = 2 + MPEG.Video.AspectRatio_ReadOnly = False + MPEG.Video.RateControlMode = MPEGVideoEncoder_RateControlMode_VBR_Auto + MPEG.Video.RateControlMode_ReadOnly = False + MPEG.Video.MaxBitRate = 0 + MPEG.Video.MaxBitRate_ReadOnly = False + MPEG.Video.MinBitRate = 0 + MPEG.Video.MinBitRate_ReadOnly = False + MPEG.Video.MinAvgBitRate = 0 + MPEG.Video.MinAvgBitRate_ReadOnly = False + MPEG.Video.CBR_BitRate = 7000000 + MPEG.Video.VBR_MultipassVBRAlgorithm = MPEGVideoEncoder_MultipassVBRAlgorithm_2PASS + MPEG.Video.VBR_AvgBitRate = 7000000 + MPEG.Video.VBR_MaxBitRate = 8000000 + MPEG.Video.VBR_MinBitRate = 2000000 + MPEG.Video.VBR_MaxPassCount = 0 + MPEG.Video.VBR_Quality_P = 0 + MPEG.Video.VBR_Quality_B = 20 + MPEG.Video.VBR_EnablePadding = False + MPEG.Video.MVBR_MaxBitRate = 8000000 + MPEG.Video.MVBR_MinBitRate = 2000000 + MPEG.Video.MVBR_Quality_P = 0 + MPEG.Video.MVBR_Quality_B = 20 + MPEG.Video.MVBR_EnablePadding = False + MPEG.Video.AVBR_Quality = 95 + MPEG.Video.AVBR_MaxBitRate = 4500000 + MPEG.Video.AVBR_MinBitRate = 2000000 + MPEG.Video.AVBR_EnablePadding = False + MPEG.Video.CQ_Quality = 65 + MPEG.Video.CQ_Quality_P = 0 + MPEG.Video.CQ_Quality_B = 20 + MPEG.Video.CQ_MaxBitRate = 8000000 + MPEG.Video.CQ_MinBitRate = 2000000 + MPEG.Video.CQ_EnablePadding = False + MPEG.Video.VBVBufferSize = 229376 + MPEG.Video.VBVBufferSize_ReadOnly = False + MPEG.Video.GOP_SeqHeaderInterval = 1 + MPEG.Video.GOP_SeqHeaderInterval_ReadOnly = False + MPEG.Video.GOP_I_FrameCount = 1 + MPEG.Video.GOP_I_FrameCount_ReadOnly = False + MPEG.Video.GOP_P_FrameCount = 4 + MPEG.Video.GOP_P_FrameCount_ReadOnly = False + MPEG.Video.GOP_B_FrameCount = 1 + MPEG.Video.GOP_B_FrameCount_ReadOnly = False + MPEG.Video.GOP_BitStreamForEdit = False + MPEG.Video.GOP_BitStreamForEdit_ReadOnly = False + MPEG.Video.GOP_MaxFrameCount = 18 + MPEG.Video.GOP_MaxFrameCount_ReadOnly = False + MPEG.Video.QuantizeMatrix_Intra_ReadOnly = False + MPEG.Video.QuantizeMatrix_NonIntra_ReadOnly = False + MPEG.Video.Profile = 4 + MPEG.Video.Profile_ReadOnly = False + MPEG.Video.Level = 8 + MPEG.Video.Level_ReadOnly = False + MPEG.Video.VideoFormat = 2 + MPEG.Video.VideoFormat_ReadOnly = False + MPEG.Video.DisplayWidth = 0 + MPEG.Video.DisplayWidth_ReadOnly = False + MPEG.Video.DisplayHeight = 0 + MPEG.Video.DisplayHeight_ReadOnly = False + MPEG.Video.MotionSearchSpeed = MPEGVideoEncoder_MotionSearchSpeed_Slow + MPEG.Video.MotionSearch_AlwaysHalfPel = False + MPEG.Video.UseFloatDCT = False + MPEG.Video.QuantizeMode = False + MPEG.Video.QuantizeModeVal_Intra = 35 + MPEG.Video.QuantizeModeVal_NonIntra = 35 + MPEG.Video.YUVBasicYCbCr = False + MPEG.Video.QuantizeMatrix_Intra = { + 081013161A1B1D22101016181B1D222513161A1B1D22222616161A1B1D222528 + 161A1B1D202328301A1B1D202328303A1A1B1D22262E38451B1D23262E384553} + MPEG.Video.QuantizeMatrix_NonIntra = { + 1011121314151617111213141516171812131415161718191314151617181A1B + 14151617191A1B1C151617181A1B1C1E1617181A1B1C1E1F1718191B1C1E1F21} + MPEG.Audio.StreamType = MPEGAudioEncoder_StreamType_MPEG1_Layer2 + MPEG.Audio.StreamType_ReadOnly = False + MPEG.Audio.SamplingFrequency = 48000 + MPEG.Audio.SamplingFrequency_ReadOnly = False + MPEG.Audio.ChannelMode = 0 + MPEG.Audio.ChannelMode_ReadOnly = False + MPEG.Audio.CantUseMono = False + MPEG.Audio.BitRate = 256000 + MPEG.Audio.BitRate_ReadOnly = False + MPEG.Audio.CalcCRC = False + MPEG.Audio.CalcCRC_ReadOnly = False + MPEG.Audio.OriginalFlag = False + MPEG.Audio.OriginalFlag_ReadOnly = False + MPEG.Audio.CopyrightFlag = False + MPEG.Audio.CopyrightFlag_ReadOnly = False + MPEG.Audio.PrivateFlag = False + MPEG.Audio.PrivateFlag_ReadOnly = False + MPEG.Audio.EmphasisType = 0 + MPEG.Audio.EmphasisType_ReadOnly = False + MPEG.System.StreamType = MPEGSystemEncoder_StreamType_MPEG2_Program + MPEG.System.StreamType_ReadOnly = False + MPEG.System.EnableCommentText = False + MPEG.System.CommentText = '' +end diff --git a/Windows Scripts/TMPG Settings/TV to DVD wizard CBR.mcf b/Windows Scripts/TMPG Settings/TV to DVD wizard CBR.mcf new file mode 100755 index 0000000..f3d3af4 --- /dev/null +++ b/Windows Scripts/TMPG Settings/TV to DVD wizard CBR.mcf @@ -0,0 +1,127 @@ +object TMPEGConfigFile + MPEG.Text = '$$DVD_NTSC_4_3_LowResolution' + MPEG.WizardCategoryName = '$$DVD\$$NTSC_LowResolution' + MPEG.WizardSubFormatName = 'CBR $$WS_Audio_MPEG1LayerII' + MPEG.WizardCaption = '$$WC_DVD_NTSC_4_3_LowResolution' + MPEG.WizardDescription = + '$$WD_Header_DVD'#13#10#13#10'$$WD_FileInfo_DVD_Lowres'#13#10#13#10'$$WD_TVSystem_NTS' + + 'C'#13#10#13#10'$$WD_RecTime_DVD_MPA_max' + MPEG.WizardTargetMedia = MPEGConfig_TargetMediaType_DVD_47GB + MPEG.WizardAutoCalcVideoBitRate = False + MPEG.WizardAutoChooseList.EnableVideoSize = False + MPEG.WizardAutoChooseList.VideoSize = <> + MPEG.WizardAutoChooseList.EnableVideoGOP = False + MPEG.WizardAutoChooseList.VideoGOP = <> + MPEG.OutputStreamType = MPEG_OutputStreamType_VideoAudio + MPEG.OutputStreamType_ReadOnly = False + MPEG.Video.StreamType = MPEGVideoEncoder_StreamType_MPEG2 + MPEG.Video.StreamType_ReadOnly = True + MPEG.Video.Width = 352 + MPEG.Video.Width_ReadOnly = True + MPEG.Video.Height = 240 + MPEG.Video.Height_ReadOnly = True + MPEG.Video.YUVFormat = 1 + MPEG.Video.YUVFormat_ReadOnly = True + MPEG.Video.DC_prec = 1 + MPEG.Video.DC_prec_ReadOnly = False + MPEG.Video.VideoEncodeMode = MPEGVideoEncoder_VideoEncodeMode_Progressive + MPEG.Video.VideoEncodeMode_ReadOnly = True + MPEG.Video.FrameRate = 4 + MPEG.Video.FrameRate_ReadOnly = True + MPEG.Video.AspectRatio = 2 + MPEG.Video.AspectRatio_ReadOnly = True + MPEG.Video.RateControlMode = MPEGVideoEncoder_RateControlMode_CBR + MPEG.Video.RateControlMode_ReadOnly = False + MPEG.Video.MaxBitRate = 8000000 + MPEG.Video.MaxBitRate_ReadOnly = False + MPEG.Video.MinBitRate = 0 + MPEG.Video.MinBitRate_ReadOnly = False + MPEG.Video.MinAvgBitRate = 750000 + MPEG.Video.MinAvgBitRate_ReadOnly = False + MPEG.Video.CBR_BitRate = 1000000 + MPEG.Video.VBR_MultipassVBRAlgorithm = MPEGVideoEncoder_MultipassVBRAlgorithm_MultipassCQ + MPEG.Video.VBR_AvgBitRate = 2000000 + MPEG.Video.VBR_MaxBitRate = 8000000 + MPEG.Video.VBR_MinBitRate = 0 + MPEG.Video.VBR_MaxPassCount = 2 + MPEG.Video.VBR_Quality_P = 0 + MPEG.Video.VBR_Quality_B = 20 + MPEG.Video.VBR_EnablePadding = True + MPEG.Video.MVBR_MaxBitRate = 8000000 + MPEG.Video.MVBR_MinBitRate = 1000000 + MPEG.Video.MVBR_Quality_P = 0 + MPEG.Video.MVBR_Quality_B = 20 + MPEG.Video.MVBR_EnablePadding = True + MPEG.Video.AVBR_Quality = 50 + MPEG.Video.AVBR_MaxBitRate = 8000000 + MPEG.Video.AVBR_MinBitRate = 1000000 + MPEG.Video.AVBR_EnablePadding = True + MPEG.Video.CQ_Quality = 65 + MPEG.Video.CQ_Quality_P = 0 + MPEG.Video.CQ_Quality_B = 20 + MPEG.Video.CQ_MaxBitRate = 8000000 + MPEG.Video.CQ_MinBitRate = 1000000 + MPEG.Video.CQ_EnablePadding = True + MPEG.Video.VBVBufferSize = 229376 + MPEG.Video.VBVBufferSize_ReadOnly = True + MPEG.Video.GOP_SeqHeaderInterval = 1 + MPEG.Video.GOP_SeqHeaderInterval_ReadOnly = True + MPEG.Video.GOP_I_FrameCount = 1 + MPEG.Video.GOP_I_FrameCount_ReadOnly = True + MPEG.Video.GOP_P_FrameCount = 5 + MPEG.Video.GOP_P_FrameCount_ReadOnly = True + MPEG.Video.GOP_B_FrameCount = 2 + MPEG.Video.GOP_B_FrameCount_ReadOnly = True + MPEG.Video.GOP_BitStreamForEdit = True + MPEG.Video.GOP_BitStreamForEdit_ReadOnly = False + MPEG.Video.GOP_MaxFrameCount = 18 + MPEG.Video.GOP_MaxFrameCount_ReadOnly = True + MPEG.Video.QuantizeMatrix_Intra_ReadOnly = False + MPEG.Video.QuantizeMatrix_NonIntra_ReadOnly = False + MPEG.Video.Profile = 4 + MPEG.Video.Profile_ReadOnly = True + MPEG.Video.Level = 8 + MPEG.Video.Level_ReadOnly = True + MPEG.Video.VideoFormat = 2 + MPEG.Video.VideoFormat_ReadOnly = True + MPEG.Video.DisplayWidth = 0 + MPEG.Video.DisplayWidth_ReadOnly = False + MPEG.Video.DisplayHeight = 0 + MPEG.Video.DisplayHeight_ReadOnly = False + MPEG.Video.MotionSearchSpeed = MPEGVideoEncoder_MotionSearchSpeed_MotionEstimate + MPEG.Video.MotionSearch_AlwaysHalfPel = False + MPEG.Video.UseFloatDCT = False + MPEG.Video.QuantizeMode = False + MPEG.Video.QuantizeModeVal_Intra = 35 + MPEG.Video.QuantizeModeVal_NonIntra = 35 + MPEG.Video.YUVBasicYCbCr = False + MPEG.Video.QuantizeMatrix_Intra = { + 081013161A1B1D22101016181B1D222513161A1B1D22222616161A1B1D222528 + 161A1B1D202328301A1B1D202328303A1A1B1D22262E38451B1D23262E384553} + MPEG.Video.QuantizeMatrix_NonIntra = { + 1011121314151617111213141516171812131415161718191314151617181A1B + 14151617191A1B1C151617181A1B1C1E1617181A1B1C1E1F1718191B1C1E1F21} + MPEG.Audio.StreamType = MPEGAudioEncoder_StreamType_MPEG1_Layer2 + MPEG.Audio.StreamType_ReadOnly = True + MPEG.Audio.SamplingFrequency = 48000 + MPEG.Audio.SamplingFrequency_ReadOnly = True + MPEG.Audio.ChannelMode = 0 + MPEG.Audio.ChannelMode_ReadOnly = False + MPEG.Audio.CantUseMono = True + MPEG.Audio.BitRate = 256000 + MPEG.Audio.BitRate_ReadOnly = False + MPEG.Audio.CalcCRC = True + MPEG.Audio.CalcCRC_ReadOnly = False + MPEG.Audio.OriginalFlag = False + MPEG.Audio.OriginalFlag_ReadOnly = False + MPEG.Audio.CopyrightFlag = False + MPEG.Audio.CopyrightFlag_ReadOnly = False + MPEG.Audio.PrivateFlag = False + MPEG.Audio.PrivateFlag_ReadOnly = False + MPEG.Audio.EmphasisType = 0 + MPEG.Audio.EmphasisType_ReadOnly = False + MPEG.System.StreamType = MPEGSystemEncoder_StreamType_MPEG2_Program + MPEG.System.StreamType_ReadOnly = True + MPEG.System.EnableCommentText = False + MPEG.System.CommentText = '' +end diff --git a/Windows Scripts/TMPG Settings/TV to DVD wizard VBR.mcf b/Windows Scripts/TMPG Settings/TV to DVD wizard VBR.mcf new file mode 100755 index 0000000..904a5ec --- /dev/null +++ b/Windows Scripts/TMPG Settings/TV to DVD wizard VBR.mcf @@ -0,0 +1,127 @@ +object TMPEGConfigFile + MPEG.Text = '$$DVD_NTSC_4_3_LowResolution' + MPEG.WizardCategoryName = '$$DVD\$$NTSC_LowResolution' + MPEG.WizardSubFormatName = 'VBR $$WS_Audio_MPEG1LayerII' + MPEG.WizardCaption = '$$WC_DVD_NTSC_4_3_LowResolution' + MPEG.WizardDescription = + '$$WD_Header_DVD'#13#10#13#10'$$WD_FileInfo_DVD_Lowres'#13#10#13#10'$$WD_TVSystem_NTS' + + 'C'#13#10#13#10'$$WD_RecTime_DVD_MPA_max'#13#10#13#10'$$WD_2passVBR' + MPEG.WizardTargetMedia = MPEGConfig_TargetMediaType_DVD_47GB + MPEG.WizardAutoCalcVideoBitRate = False + MPEG.WizardAutoChooseList.EnableVideoSize = False + MPEG.WizardAutoChooseList.VideoSize = <> + MPEG.WizardAutoChooseList.EnableVideoGOP = False + MPEG.WizardAutoChooseList.VideoGOP = <> + MPEG.OutputStreamType = MPEG_OutputStreamType_VideoAudio + MPEG.OutputStreamType_ReadOnly = False + MPEG.Video.StreamType = MPEGVideoEncoder_StreamType_MPEG2 + MPEG.Video.StreamType_ReadOnly = True + MPEG.Video.Width = 352 + MPEG.Video.Width_ReadOnly = True + MPEG.Video.Height = 240 + MPEG.Video.Height_ReadOnly = True + MPEG.Video.YUVFormat = 1 + MPEG.Video.YUVFormat_ReadOnly = True + MPEG.Video.DC_prec = 1 + MPEG.Video.DC_prec_ReadOnly = False + MPEG.Video.VideoEncodeMode = MPEGVideoEncoder_VideoEncodeMode_Progressive + MPEG.Video.VideoEncodeMode_ReadOnly = True + MPEG.Video.FrameRate = 4 + MPEG.Video.FrameRate_ReadOnly = True + MPEG.Video.AspectRatio = 2 + MPEG.Video.AspectRatio_ReadOnly = True + MPEG.Video.RateControlMode = MPEGVideoEncoder_RateControlMode_VBR_2PASS + MPEG.Video.RateControlMode_ReadOnly = False + MPEG.Video.MaxBitRate = 8000000 + MPEG.Video.MaxBitRate_ReadOnly = False + MPEG.Video.MinBitRate = 0 + MPEG.Video.MinBitRate_ReadOnly = False + MPEG.Video.MinAvgBitRate = 750000 + MPEG.Video.MinAvgBitRate_ReadOnly = False + MPEG.Video.CBR_BitRate = 2000000 + MPEG.Video.VBR_MultipassVBRAlgorithm = MPEGVideoEncoder_MultipassVBRAlgorithm_MultipassCQ + MPEG.Video.VBR_AvgBitRate = 1000000 + MPEG.Video.VBR_MaxBitRate = 8000000 + MPEG.Video.VBR_MinBitRate = 0 + MPEG.Video.VBR_MaxPassCount = 2 + MPEG.Video.VBR_Quality_P = 0 + MPEG.Video.VBR_Quality_B = 20 + MPEG.Video.VBR_EnablePadding = True + MPEG.Video.MVBR_MaxBitRate = 8000000 + MPEG.Video.MVBR_MinBitRate = 1000000 + MPEG.Video.MVBR_Quality_P = 0 + MPEG.Video.MVBR_Quality_B = 20 + MPEG.Video.MVBR_EnablePadding = True + MPEG.Video.AVBR_Quality = 50 + MPEG.Video.AVBR_MaxBitRate = 8000000 + MPEG.Video.AVBR_MinBitRate = 1000000 + MPEG.Video.AVBR_EnablePadding = True + MPEG.Video.CQ_Quality = 65 + MPEG.Video.CQ_Quality_P = 0 + MPEG.Video.CQ_Quality_B = 20 + MPEG.Video.CQ_MaxBitRate = 8000000 + MPEG.Video.CQ_MinBitRate = 1000000 + MPEG.Video.CQ_EnablePadding = True + MPEG.Video.VBVBufferSize = 229376 + MPEG.Video.VBVBufferSize_ReadOnly = True + MPEG.Video.GOP_SeqHeaderInterval = 1 + MPEG.Video.GOP_SeqHeaderInterval_ReadOnly = True + MPEG.Video.GOP_I_FrameCount = 1 + MPEG.Video.GOP_I_FrameCount_ReadOnly = True + MPEG.Video.GOP_P_FrameCount = 5 + MPEG.Video.GOP_P_FrameCount_ReadOnly = True + MPEG.Video.GOP_B_FrameCount = 2 + MPEG.Video.GOP_B_FrameCount_ReadOnly = True + MPEG.Video.GOP_BitStreamForEdit = True + MPEG.Video.GOP_BitStreamForEdit_ReadOnly = False + MPEG.Video.GOP_MaxFrameCount = 18 + MPEG.Video.GOP_MaxFrameCount_ReadOnly = True + MPEG.Video.QuantizeMatrix_Intra_ReadOnly = False + MPEG.Video.QuantizeMatrix_NonIntra_ReadOnly = False + MPEG.Video.Profile = 4 + MPEG.Video.Profile_ReadOnly = True + MPEG.Video.Level = 8 + MPEG.Video.Level_ReadOnly = True + MPEG.Video.VideoFormat = 2 + MPEG.Video.VideoFormat_ReadOnly = True + MPEG.Video.DisplayWidth = 0 + MPEG.Video.DisplayWidth_ReadOnly = False + MPEG.Video.DisplayHeight = 0 + MPEG.Video.DisplayHeight_ReadOnly = False + MPEG.Video.MotionSearchSpeed = MPEGVideoEncoder_MotionSearchSpeed_MotionEstimate + MPEG.Video.MotionSearch_AlwaysHalfPel = False + MPEG.Video.UseFloatDCT = False + MPEG.Video.QuantizeMode = False + MPEG.Video.QuantizeModeVal_Intra = 35 + MPEG.Video.QuantizeModeVal_NonIntra = 35 + MPEG.Video.YUVBasicYCbCr = False + MPEG.Video.QuantizeMatrix_Intra = { + 081013161A1B1D22101016181B1D222513161A1B1D22222616161A1B1D222528 + 161A1B1D202328301A1B1D202328303A1A1B1D22262E38451B1D23262E384553} + MPEG.Video.QuantizeMatrix_NonIntra = { + 1011121314151617111213141516171812131415161718191314151617181A1B + 14151617191A1B1C151617181A1B1C1E1617181A1B1C1E1F1718191B1C1E1F21} + MPEG.Audio.StreamType = MPEGAudioEncoder_StreamType_MPEG1_Layer2 + MPEG.Audio.StreamType_ReadOnly = True + MPEG.Audio.SamplingFrequency = 48000 + MPEG.Audio.SamplingFrequency_ReadOnly = True + MPEG.Audio.ChannelMode = 0 + MPEG.Audio.ChannelMode_ReadOnly = False + MPEG.Audio.CantUseMono = True + MPEG.Audio.BitRate = 256000 + MPEG.Audio.BitRate_ReadOnly = False + MPEG.Audio.CalcCRC = True + MPEG.Audio.CalcCRC_ReadOnly = False + MPEG.Audio.OriginalFlag = False + MPEG.Audio.OriginalFlag_ReadOnly = False + MPEG.Audio.CopyrightFlag = False + MPEG.Audio.CopyrightFlag_ReadOnly = False + MPEG.Audio.PrivateFlag = False + MPEG.Audio.PrivateFlag_ReadOnly = False + MPEG.Audio.EmphasisType = 0 + MPEG.Audio.EmphasisType_ReadOnly = False + MPEG.System.StreamType = MPEGSystemEncoder_StreamType_MPEG2_Program + MPEG.System.StreamType_ReadOnly = True + MPEG.System.EnableCommentText = False + MPEG.System.CommentText = '' +end diff --git a/Windows Scripts/TMPG Settings/TV to DVD.mcf b/Windows Scripts/TMPG Settings/TV to DVD.mcf new file mode 100755 index 0000000..265b898 --- /dev/null +++ b/Windows Scripts/TMPG Settings/TV to DVD.mcf @@ -0,0 +1,141 @@ +object TMPEGConfigFile + MPEG.Text = '' + MPEG.WizardCategoryName = '' + MPEG.WizardSubFormatName = '' + MPEG.WizardCaption = '' + MPEG.WizardDescription = '' + MPEG.WizardTargetMedia = MPEGConfig_TargetMediaType_Unknown + MPEG.WizardAutoCalcVideoBitRate = False + MPEG.WizardAutoChooseList.EnableVideoSize = False + MPEG.WizardAutoChooseList.VideoSize = < + item + MinVideoBitRate = 2000000 + Width = 352 + Height = 480 + VideoEncodeMode = MPEGVideoEncoder_VideoEncodeMode_Interlace + FrameRate = 4 + AspectRatio = 2 + end + item + MinVideoBitRate = 4000000 + Width = 720 + Height = 480 + VideoEncodeMode = MPEGVideoEncoder_VideoEncodeMode_Interlace + FrameRate = 4 + AspectRatio = 2 + end> + MPEG.WizardAutoChooseList.EnableVideoGOP = False + MPEG.WizardAutoChooseList.VideoGOP = <> + MPEG.OutputStreamType = MPEG_OutputStreamType_VideoAudio + MPEG.OutputStreamType_ReadOnly = False + MPEG.Video.StreamType = MPEGVideoEncoder_StreamType_MPEG2 + MPEG.Video.StreamType_ReadOnly = False + MPEG.Video.Width = 352 + MPEG.Video.Width_ReadOnly = False + MPEG.Video.Height = 240 + MPEG.Video.Height_ReadOnly = False + MPEG.Video.YUVFormat = 1 + MPEG.Video.YUVFormat_ReadOnly = False + MPEG.Video.DC_prec = 2 + MPEG.Video.DC_prec_ReadOnly = False + MPEG.Video.VideoEncodeMode = MPEGVideoEncoder_VideoEncodeMode_Interlace + MPEG.Video.VideoEncodeMode_ReadOnly = False + MPEG.Video.FrameRate = 4 + MPEG.Video.FrameRate_ReadOnly = False + MPEG.Video.AspectRatio = 2 + MPEG.Video.AspectRatio_ReadOnly = False + MPEG.Video.RateControlMode = MPEGVideoEncoder_RateControlMode_VBR_Auto + MPEG.Video.RateControlMode_ReadOnly = False + MPEG.Video.MaxBitRate = 0 + MPEG.Video.MaxBitRate_ReadOnly = False + MPEG.Video.MinBitRate = 0 + MPEG.Video.MinBitRate_ReadOnly = False + MPEG.Video.MinAvgBitRate = 0 + MPEG.Video.MinAvgBitRate_ReadOnly = False + MPEG.Video.CBR_BitRate = 7000000 + MPEG.Video.VBR_MultipassVBRAlgorithm = MPEGVideoEncoder_MultipassVBRAlgorithm_2PASS + MPEG.Video.VBR_AvgBitRate = 7000000 + MPEG.Video.VBR_MaxBitRate = 8000000 + MPEG.Video.VBR_MinBitRate = 2000000 + MPEG.Video.VBR_MaxPassCount = 0 + MPEG.Video.VBR_Quality_P = 0 + MPEG.Video.VBR_Quality_B = 20 + MPEG.Video.VBR_EnablePadding = False + MPEG.Video.MVBR_MaxBitRate = 8000000 + MPEG.Video.MVBR_MinBitRate = 2000000 + MPEG.Video.MVBR_Quality_P = 0 + MPEG.Video.MVBR_Quality_B = 20 + MPEG.Video.MVBR_EnablePadding = False + MPEG.Video.AVBR_Quality = 95 + MPEG.Video.AVBR_MaxBitRate = 4500000 + MPEG.Video.AVBR_MinBitRate = 1000000 + MPEG.Video.AVBR_EnablePadding = True + MPEG.Video.CQ_Quality = 65 + MPEG.Video.CQ_Quality_P = 0 + MPEG.Video.CQ_Quality_B = 20 + MPEG.Video.CQ_MaxBitRate = 8000000 + MPEG.Video.CQ_MinBitRate = 2000000 + MPEG.Video.CQ_EnablePadding = False + MPEG.Video.VBVBufferSize = 229376 + MPEG.Video.VBVBufferSize_ReadOnly = False + MPEG.Video.GOP_SeqHeaderInterval = 1 + MPEG.Video.GOP_SeqHeaderInterval_ReadOnly = False + MPEG.Video.GOP_I_FrameCount = 1 + MPEG.Video.GOP_I_FrameCount_ReadOnly = False + MPEG.Video.GOP_P_FrameCount = 4 + MPEG.Video.GOP_P_FrameCount_ReadOnly = False + MPEG.Video.GOP_B_FrameCount = 1 + MPEG.Video.GOP_B_FrameCount_ReadOnly = False + MPEG.Video.GOP_BitStreamForEdit = False + MPEG.Video.GOP_BitStreamForEdit_ReadOnly = False + MPEG.Video.GOP_MaxFrameCount = 18 + MPEG.Video.GOP_MaxFrameCount_ReadOnly = False + MPEG.Video.QuantizeMatrix_Intra_ReadOnly = False + MPEG.Video.QuantizeMatrix_NonIntra_ReadOnly = False + MPEG.Video.Profile = 4 + MPEG.Video.Profile_ReadOnly = False + MPEG.Video.Level = 8 + MPEG.Video.Level_ReadOnly = False + MPEG.Video.VideoFormat = 2 + MPEG.Video.VideoFormat_ReadOnly = False + MPEG.Video.DisplayWidth = 0 + MPEG.Video.DisplayWidth_ReadOnly = False + MPEG.Video.DisplayHeight = 0 + MPEG.Video.DisplayHeight_ReadOnly = False + MPEG.Video.MotionSearchSpeed = MPEGVideoEncoder_MotionSearchSpeed_Normal + MPEG.Video.MotionSearch_AlwaysHalfPel = False + MPEG.Video.UseFloatDCT = False + MPEG.Video.QuantizeMode = False + MPEG.Video.QuantizeModeVal_Intra = 35 + MPEG.Video.QuantizeModeVal_NonIntra = 35 + MPEG.Video.YUVBasicYCbCr = False + MPEG.Video.QuantizeMatrix_Intra = { + 081013161A1B1D22101016181B1D222513161A1B1D22222616161A1B1D222528 + 161A1B1D202328301A1B1D202328303A1A1B1D22262E38451B1D23262E384553} + MPEG.Video.QuantizeMatrix_NonIntra = { + 1011121314151617111213141516171812131415161718191314151617181A1B + 14151617191A1B1C151617181A1B1C1E1617181A1B1C1E1F1718191B1C1E1F21} + MPEG.Audio.StreamType = MPEGAudioEncoder_StreamType_MPEG1_Layer2 + MPEG.Audio.StreamType_ReadOnly = False + MPEG.Audio.SamplingFrequency = 48000 + MPEG.Audio.SamplingFrequency_ReadOnly = False + MPEG.Audio.ChannelMode = 0 + MPEG.Audio.ChannelMode_ReadOnly = False + MPEG.Audio.CantUseMono = False + MPEG.Audio.BitRate = 256000 + MPEG.Audio.BitRate_ReadOnly = False + MPEG.Audio.CalcCRC = False + MPEG.Audio.CalcCRC_ReadOnly = False + MPEG.Audio.OriginalFlag = False + MPEG.Audio.OriginalFlag_ReadOnly = False + MPEG.Audio.CopyrightFlag = False + MPEG.Audio.CopyrightFlag_ReadOnly = False + MPEG.Audio.PrivateFlag = False + MPEG.Audio.PrivateFlag_ReadOnly = False + MPEG.Audio.EmphasisType = 0 + MPEG.Audio.EmphasisType_ReadOnly = False + MPEG.System.StreamType = MPEGSystemEncoder_StreamType_MPEG2_Program + MPEG.System.StreamType_ReadOnly = False + MPEG.System.EnableCommentText = False + MPEG.System.CommentText = '' +end diff --git a/Windows Scripts/Thumbs.db b/Windows Scripts/Thumbs.db new file mode 100755 index 0000000000000000000000000000000000000000..784cb688d52716cdd60af21bf1c11952024dfcc0 GIT binary patch literal 28672 zcmeI52V4}%w(uK4QKBG7W>8QNM6!SaLyiKHC1;VGB?t_Ph~%Jv0YQ>v5F}@itV9tc zXURFkF!R;8>)zdc_rBeG_rBi?pT+#Adb+CXbf2m^U0tE+>LeLY%%`4!e&<9WYzT!u z1)ccSek`z!;hQ@RLC3%b1{4~N{%I!!fz2Q8e~|``z`25~gjfM2fa3s6p5p>e0!{(& z0Qdj`03m<~Kn%d-I}`9p0cQYY0CK=t00n>&a2`MnpaIYV=m7Kp7=QtA4uDCA5%?DX zmjD+5%m5Yu8-N#piE|nF?0_o(4ge>B3&0KF0q_AZ@vi>tgUuiA4>X_(*@Hh9kQY*r z9q^qX51_q2@6Lh}^IZg{to�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 literal 0 HcmV?d00001 diff --git a/Windows Scripts/dv2all.bat b/Windows Scripts/dv2all.bat new file mode 100755 index 0000000..aa09c9a --- /dev/null +++ b/Windows Scripts/dv2all.bat @@ -0,0 +1,17 @@ +echo ######################## +echo Converting DV to DIVX... +echo ######################## +echo. +dv2divx.bat + +echo ###################### +echo Converting DV to RM... +echo ###################### +echo. +C:\Perl\bin\perl -w dv2rm.pl + +###### +DONE!! +###### + +pause \ No newline at end of file diff --git a/Windows Scripts/dv2divx.bat b/Windows Scripts/dv2divx.bat new file mode 100755 index 0000000..6067262 --- /dev/null +++ b/Windows Scripts/dv2divx.bat @@ -0,0 +1 @@ +"C:\Program Files\Java\j2re1.4.0\bin\javaw.exe" -jar "C:\Program Files\DubMan\DubMan.jar" "V:\Videos\DubMan Templates\Convert DV to DivX.djt" /r diff --git a/Windows Scripts/dv2divx_2pass.bat b/Windows Scripts/dv2divx_2pass.bat new file mode 100755 index 0000000..913737e --- /dev/null +++ b/Windows Scripts/dv2divx_2pass.bat @@ -0,0 +1 @@ +"C:\Program Files\Java\j2re1.4.1_02\bin\javaw.exe" -jar "C:\Program Files\DubMan\DubMan.jar" "V:\Videos\DubMan Templates\Convert DV to DivX 2 passes.djt" /r diff --git a/Windows Scripts/dv2divx_2pass_HQ.bat b/Windows Scripts/dv2divx_2pass_HQ.bat new file mode 100755 index 0000000..1e22866 --- /dev/null +++ b/Windows Scripts/dv2divx_2pass_HQ.bat @@ -0,0 +1 @@ +"C:\Program Files\Java\j2re1.4.0\bin\javaw.exe" -jar "C:\Program Files\DubMan\DubMan.jar" "V:\Videos\DubMan Templates\Convert DV to DivX 2nd pass HQ.djt" /r diff --git a/Windows Scripts/dv2rm.bat b/Windows Scripts/dv2rm.bat new file mode 100755 index 0000000..3a1ed91 --- /dev/null +++ b/Windows Scripts/dv2rm.bat @@ -0,0 +1 @@ +C:\Perl\bin\perl V:\Videos\dv2rm.pl \ No newline at end of file diff --git a/Windows Scripts/dv2rm.pl b/Windows Scripts/dv2rm.pl new file mode 100755 index 0000000..460b888 --- /dev/null +++ b/Windows Scripts/dv2rm.pl @@ -0,0 +1,125 @@ +# Author: Alan J. Pippin +# Perl script written for a windows based machine running +# Real Producer to auotmatically create rm videos for all +# the avi files in a given directory. + +#$dvpath = "U:\\MiniDV\\"; +#$dvpath = "U:\\DVtoRM\\"; +$dvpath = "V:\\MiniDV\\"; +$webdir = "V:\\RealContent\\www"; +$ipaqdir= "V:\\RealContent\\ipaq"; +$hqdir = "V:\\RealContent\\HQ"; +$producer = "C:\\Program\ Files\\Real\\Helix\ Producer\ Plus\\producer.exe"; +$author = "Alan J. Pippin"; +$date_prog = "F:\\cygwin\\bin\\date.exe"; +$logfile = "V:\\RealContent\\convert.log"; +$audiogain = 0; # Can be -12 to 12 + +$makeweb = 1; # Can be 0 or 1 +$makeipaq = 0; # Can be 0 or 1 +$makehq = 0; # Can be 0 or 1 + +opendir( DIR, $dvpath ) or die "Can't open $path: $!"; +chdir $dvpath; +unlink "$logfile"; + +$start_time = `$date_prog`; chomp $start_time; + +$numfiles=0; +while ( $file = readdir( DIR ) ) { + if( -d "$path\\$file" ) { next; } + if( $file !~ /\.avi|mpg|mpg2$/) { next; } + $numfiles++; +} +close(DIR); + +if($makeweb==1) { +opendir( DIR, $dvpath ); +print "------------------------------------------------------------------\n"; +print "-> Converting all video files in $dvpath to web streamed rm files...\n"; +print "------------------------------------------------------------------\n\n"; +$fileno = 0; +while ( $file = readdir( DIR ) ) { + if( -d "$path\\$file" ) { next; } + if( $file !~ /\.avi|mpg|mpg2$/) { next; } + $fileno++; + $file =~ /^(.*?)\.(avi|mpg|mpg2)$/; $filename = $1; $ext = $2; + $date = `$date_prog`; + $outfile = "$filename.rm"; $outfile =~ s/\s/_/g; $outfile =~ tr/[A-Z]/[a-z]/; + $outfile = "$webdir\\$outfile"; + print "-> [$fileno/$numfiles] Encoding $filename.$ext -> $outfile\n"; + print " Started $date"; + if( -e "$outfile") { print " Output file $outfile already exists...\n"; next; } + $options = "-t \"$filename\" -a \"$author\" -i \"$file\" "; + $options.= "-o \"$outfile\" -ad \"28k,56k,128k,150k\" "; + $options.= "-rs 320x213 -ag $audiogain"; + system("\"$producer\" $options"); + print "\n"; + $date = `$date_prog`; + print " Finished $date\n\n"; +} +close(DIR); +} + +if($makeipaq==1) { +opendir( DIR, $dvpath ); +print "-------------------------------------------------------------------------\n"; +print "-> Converting all avi files in $dvpath to ipaq single streamed rm files...\n"; +print "-------------------------------------------------------------------------\n\n"; +$fileno = 0; +while ( $file = readdir( DIR ) ) { + if( -d "$path\\$file" ) { next; } + if( $file !~ /\.avi$/) { next; } + $fileno++; + $file =~ /^(.*?)\.avi$/; $filename = $1; + $date = `$date_prog`; + $outfile = "$filename"; $outfile =~ s/\s/_/g; $outfile =~ tr/[A-Z]/[a-z]/; $outfile.="_ipaq.rm"; + $outfile = "$ipaqdir\\$outfile"; + print "-> [$fileno/$numfiles] Encoding $filename.avi -> $outfile\n"; + print " Started $date"; + if( -e "$outfile") { print " Output file already exists...\n"; next; } + $options = "-t \"$filename\" -a \"$author\" -i \"$file\" "; + $options.= "-o \"$outfile\" -ad \"128k\" "; + $options.= "-rs 320x240 -ag $audiogain"; + system("\"$producer\" $options"); + print "\n"; + $date = `$date_prog`; + print " Finished $date\n\n"; +} +close(DIR); +} + +if($makehq==1) { +opendir( DIR, $dvpath ); +print "-------------------------------------------------------------------------\n"; +print "-> Converting all avi files in $dvpath to HighQual single streamed rm files...\n"; +print "-------------------------------------------------------------------------\n\n"; +$fileno = 0; +while ( $file = readdir( DIR ) ) { + if( -d "$path\\$file" ) { next; } + if( $file !~ /\.avi$/) { next; } + $fileno++; + $file =~ /^(.*?)\.avi$/; $filename = $1; + $date = `$date_prog`; + $outfile = "$filename"; $outfile =~ s/\s/_/g; $outfile =~ tr/[A-Z]/[a-z]/; $outfile.="_hq.rm"; + $outfile = "$hqdir\\$outfile"; + print "-> [$fileno/$numfiles] Encoding $filename.avi -> $outfile\n"; + print " Started $date"; + if( -e "$outfile") { print " Output file already exists...\n"; next; } + $options = "-t \"$filename\" -a \"$author\" -i \"$file\" "; + $options.= "-o \"$outfile\" -ad \"512k\" "; + $options.= "-rs 720x480 -ag $audiogain"; + system("\"$producer\" $options"); + print "\n"; + $date = `$date_prog`; + print " Finished $date\n\n"; +} +close(DIR); +} + +$stop_time = `$date_prog`; chomp $stop_time; + +print "Total Time Summary:\n$start_time\n$stop_time\n\n"; +print "Press 'Enter' to continue..."; <STDIN> + + diff --git a/avi2divx b/avi2divx new file mode 100755 index 0000000..511ac6f --- /dev/null +++ b/avi2divx @@ -0,0 +1,22 @@ +#!/bin/bash + +MINBITRATE=6000 +MAXBITRATE=8000 + +BITRATE="vbitrate=$MINBITRATE:vrc_maxrate=$MAXBITRATE:vrc_buf_size=1835:vrc_minrate=$MINBITRATE" +PASS1_OPTS="-mc 0 -oac mp3lame -lameopts cbr:cbr=196 -ffourcc XVID -fps 29.97 -ovc lavc " +PASS1_OPTS="$PASS1_OPTS -lavcopts vcodec=mpeg4:vhq:keyint=15:vpass=1:$BITRATE -vf pp=ci" +PASS2_OPTS="-mc 0 -oac mp3lame -lameopts cbr:cbr=196 -ffourcc XVID -fps 29.97 -ovc lavc " +PASS2_OPTS="$PASS2_OPTS -lavcopts vcodec=mpeg4:vhq:keyint=15:vpass=2:$BITRATE -vf pp=ci" + +INFILE=$* +OUTFILE=`echo $* | sed 's/\.avi/\.divx.avi/g'` + +date +echo "-> 1st pass: /usr/bin/mencoder $PASS1_OPTS -o \"$OUTFILE\" -idx \"$INFILE\"" +/usr/bin/mencoder $PASS1_OPTS -o "$OUTFILE" -idx "$INFILE" +date +echo "-> 2nd pasS: /usr/bin/mencoder $PASS2_OPTS -o \"$OUTFILE\" -idx \"$INFILE\"" +/usr/bin/mencoder $PASS2_OPTS -o "$OUTFILE" -idx "$INFILE" +date + diff --git a/avi2divx4 b/avi2divx4 new file mode 100755 index 0000000..c86cc16 --- /dev/null +++ b/avi2divx4 @@ -0,0 +1,13 @@ +#!/bin/bash + +BITRATE=6000 +PASS1_OPTS="-mc 0 -oac mp3lame -lameopts cbr:cbr=196 -ffourcc XVID -fps 29.97 " +PASS1_OPTS="$PASS1_OPTS -ovc divx4 -divx4opts q=5:br=$BITRATE:key=30" +INFILE=$* +OUTFILE=`echo $* | sed 's/\.avi/\.divx4.avi/g'` + +date +echo "-> 1st pass: /usr/bin/mencoder $PASS1_OPTS -o \"$OUTFILE\" -idx \"$INFILE\"" +/usr/bin/mencoder $PASS1_OPTS -o "$OUTFILE" -idx "$INFILE" +date + diff --git a/avi2flv b/avi2flv new file mode 100755 index 0000000..89a7784 --- /dev/null +++ b/avi2flv @@ -0,0 +1,25 @@ +#!/bin/bash + +if [[ -z "$1" ]]; +then + echo "Usage: $0 <filename>" + exit 1 +fi + +echo "-> Encoding $1 to flash video format..." + +if [[ ! -f "$1" ]]; +then + echo "-E- Unable to find file to encode: $1" + exit 1 +fi + +# set output filename +output=`echo $1 | sed -e 's/\..*$/\.flv/'` + +# first pass +ffmpeg -y -i $1 -s 320x240 -pass 1 -acodec copy $output + +# second pass +ffmpeg -y -i $1 -s 320x240 -pass 2 -acodec copy $output + diff --git a/avi2mp3avi b/avi2mp3avi new file mode 100755 index 0000000..8880d82 --- /dev/null +++ b/avi2mp3avi @@ -0,0 +1,4 @@ +#!/bin/bash + +cat "$1" | mencoder -oac mp3lame -ovc copy - -o "$2" + diff --git a/avi2raw b/avi2raw new file mode 100755 index 0000000..18f52f8 --- /dev/null +++ b/avi2raw @@ -0,0 +1,10 @@ +#!/bin/bash + +OPTS="-oac pcm -ovc raw -vf format" +INFILE=$* +OUTFILE=`echo $* | sed 's/\.avi/\.raw.avi/g'` + +date +echo "-> /usr/bin/mencoder $OPTS -o \"$OUTFILE\" -idx \"$INFILE\"" +/usr/bin/mencoder $OPTS -o "$OUTFILE" -idx "$INFILE" + diff --git a/avi2xvid b/avi2xvid new file mode 100755 index 0000000..2a4f7fc --- /dev/null +++ b/avi2xvid @@ -0,0 +1,18 @@ +#!/bin/bash + +BITRATE=6000 +PASS1_OPTS="-mc 0 -oac mp3lame -lameopts cbr:cbr=196 -ffourcc XVID -fps 29.97 " +PASS1_OPTS="$PASS1_OPTS -ovc xvid -xvidencopts me_quality=0:vhq=0:pass=1:bitrate=$BITRATE" +PASS2_OPTS="-mc 0 -oac mp3lame -lameopts cbr:cbr=196 -ffourcc XVID -fps 29.97 " +PASS2_OPTS="$PASS2_OPTS -ovc xvid -xvidencopts me_quality=6:vhq=3:pass=2:bitrate=$BITRATE" +INFILE=$* +OUTFILE=`echo $* | sed 's/\.avi/\.xvid.avi/g'` + +date +echo "-> 1st pass: /usr/bin/mencoder $PASS1_OPTS -o \"$OUTFILE\" -idx \"$INFILE\"" +/usr/bin/mencoder $PASS1_OPTS -o "$OUTFILE" -idx "$INFILE" +date +echo "-> 2nd pasS: /usr/bin/mencoder $PASS2_OPTS -o \"$OUTFILE\" -idx \"$INFILE\"" +/usr/bin/mencoder $PASS2_OPTS -o "$OUTFILE" -idx "$INFILE" +date + diff --git a/avimerge b/avimerge new file mode 100755 index 0000000000000000000000000000000000000000..7b680b4631d10ad18d1e32b1c5a60258c22fd600 GIT binary patch literal 63788 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 z®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%0ArGpt~H2SkR)gv6jTkdAL{s3 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 JTuP_we*hVT82$hN literal 0 HcmV?d00001 diff --git a/backup_system.cmd b/backup_system.cmd new file mode 100755 index 0000000..c46b8ae --- /dev/null +++ b/backup_system.cmd @@ -0,0 +1,14 @@ +#!/bin/bash + +# Remove any old backup images +rm -rf /home/backup/* + +# Since this entire system fits on 1 DVD, blow away old backup database +rm -f /var/lib/backups/backups.db + +# Create a new backup image +/usr/local/bin/pack-image.sh + +# Burn the new backup image +/usr/local/bin/burn-imgs.sh + diff --git a/burniso.cmd b/burniso.cmd new file mode 100755 index 0000000..ae8c602 --- /dev/null +++ b/burniso.cmd @@ -0,0 +1,3 @@ +#!/bin/bash + +wodim -v -dao dev=/dev/hda $* diff --git a/copy_home_videos.cmd b/copy_home_videos.cmd new file mode 100755 index 0000000..f672576 --- /dev/null +++ b/copy_home_videos.cmd @@ -0,0 +1,64 @@ +#!/bin/bash +# DESCRIPTION: +# Wrapper script around make_home_videos.pl script that +# facilitates copying over the daily_clips to another +# linux server location, properly merging the clips +# created with the existing clips and playlists on +# the remote server. +# USAGE: copy_home_videos.cmd <tapename> +# EXAMPLE: copy_home_videos.cmd Dec06-Apr07 + +SERVER="/mnt/p/video/HomeVideos" + +# Copy the daily clips over to the main file server +pushd "$*/daily_clips" > /dev/null +lastyear="" +for i in `/bin/ls -1 *.avi`; +do + filename=`echo "$i" | sed 's/.avi//g'` + year=`echo "$filename" | awk --field-separator - '{print $1}'` + month=`echo "$filename" | awk --field-separator - '{print $2}'` + day=`echo "$filename" | awk --field-separator - '{print $3}'` + + # set lastyear if we haven't done so yet + if [[ -z "$lastyear" ]]; + then + lastyear="$year" + fi + + # if we have changed year directories, remake the playlists for lastyear + if [[ "$year" != "$lastyear" ]]; + then + pushd "$SERVER/$lastyear" > /dev/null + make_home_videos.pl -p -d . + popd > /dev/null + fi + + # make the destination directory if it is missing + if [[ ! -d "$SERVER/$year" ]]; + then + mkdir "$SERVER/$year" + fi + + # don't overwrite existing filenames + basefilename="$filename" + num=0 + while [[ -f "$SERVER/$year/$filename.avi" ]]; + do + ((num++)) + filename="$basefilename.$num" + done + + echo "Copying $i to $SERVER/$year/$filename.avi" + cp "$i" "$SERVER/$year/$filename.avi" + + lastyear=$year +done + +# remake the playlists for year +pushd "$SERVER/$year" > /dev/null +make_home_videos.pl -p -d . +popd > /dev/null + +popd > /dev/null + diff --git a/create_merge_videos b/create_merge_videos new file mode 100644 index 0000000..aaa1c9a --- /dev/null +++ b/create_merge_videos @@ -0,0 +1 @@ +make_home_video.pl -m -d <path to video dir> diff --git a/dos2ux b/dos2ux new file mode 100755 index 0000000000000000000000000000000000000000..a1a2cec5164910cf18d392659c7d236fff23eef9 GIT binary patch literal 19771 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 Y&t!aU3(r~1U-Z!>>=)o8NPdC;2c1}bi~s-t literal 0 HcmV?d00001 diff --git a/dump_raw_video_files_from_camera b/dump_raw_video_files_from_camera new file mode 100755 index 0000000..d540dd7 --- /dev/null +++ b/dump_raw_video_files_from_camera @@ -0,0 +1 @@ +/usr/bin/dvgrab --autosplit --timestamp --format dv2 --opendml --size 22000 home_video_ diff --git a/em b/em new file mode 100755 index 0000000..90b80f1 --- /dev/null +++ b/em @@ -0,0 +1,3 @@ +#!/bin/bash +/usr/bin/emacs -fn 8x13 $* & + diff --git a/fix_video_names b/fix_video_names new file mode 100644 index 0000000..266f312 --- /dev/null +++ b/fix_video_names @@ -0,0 +1 @@ +rn 's/\.00\.avi/-00_xvid2500\.avi/' * diff --git a/make_home_videos.cmd b/make_home_videos.cmd new file mode 100755 index 0000000..ac3fa22 --- /dev/null +++ b/make_home_videos.cmd @@ -0,0 +1,72 @@ +#!/bin/bash +# DESCRIPTION: +# Wrapper script around make_home_videos.pl script that +# facilitates copying over the daily_clips to another +# linux server location, properly merging the clips +# created with the existing clips and playlists on +# the remote server. +# USAGE: make_home_videos.cmd <tapename> +# EXAMPLE: make_home_videos.cmd Dec06-Apr07 + +SERVER="/mnt/server/videos/HomeVideos" +MAKE_VIDEOS="/mnt/server/videos/bin/make_home_videos.pl" + +$MAKE_VIDEOS -e -c -m -p -a -n $* + +# Copy the daily clips over to the main file server +pushd "$*/daily_clips" > /dev/null +lastyear="" +for i in `/bin/ls -1 *.avi`; +do + filename=`echo "$i" | sed 's/.avi//g'` + year=`echo "$filename" | awk --field-separator - '{print $1}'` + month=`echo "$filename" | awk --field-separator - '{print $2}'` + day=`echo "$filename" | awk --field-separator - '{print $3}'` + + # set lastyear if we haven't done so yet + if [[ -z "$lastyear" ]]; + then + lastyear="$year" + fi + + # if we have changed year directories, remake the playlists for lastyear + if [[ "$year" != "$lastyear" ]]; + then + pushd "$SERVER/$lastyear" > /dev/null + $MAKE_VIDEOS -p -d . + popd > /dev/null + fi + + # make the destination directory if it is missing + if [[ ! -d "$SERVER/$year" ]]; + then + mkdir "$SERVER/$year" + fi + + # don't overwrite existing filenames + basefilename="$filename" + num=0 + while [[ -f "$SERVER/$year/$filename.avi" ]]; + do + ((num++)) + filename="$basefilename.$num" + done + + echo "Copying $i to $SERVER/$year/$filename.avi" + cp "$i" "$SERVER/$year/$filename.avi" + + lastyear=$year +done + +# remake the playlists for year +pushd "$SERVER/$year" > /dev/null +$MAKE_VIDEOS -p -d . +popd > /dev/null + +popd > /dev/null + +echo "-> Rebooting the system in 10 seconds... Press CTRL-C to abort..." +sleep 10 +echo "-> Rebooting now..." +sudo /sbin/reboot + diff --git a/make_home_videos.cmd.noreboot b/make_home_videos.cmd.noreboot new file mode 100755 index 0000000..a34a1a5 --- /dev/null +++ b/make_home_videos.cmd.noreboot @@ -0,0 +1,67 @@ +#!/bin/bash +# DESCRIPTION: +# Wrapper script around make_home_videos.pl script that +# facilitates copying over the daily_clips to another +# linux server location, properly merging the clips +# created with the existing clips and playlists on +# the remote server. +# USAGE: make_home_videos.cmd <tapename> +# EXAMPLE: make_home_videos.cmd Dec06-Apr07 + +SERVER="/mnt/server/videos/HomeVideos" +MAKE_VIDEOS="/mnt/server/videos/bin/make_home_videos.pl" + +$MAKE_VIDEOS -e -c -m -p -a -n $* + +# Copy the daily clips over to the main file server +pushd "$*/daily_clips" > /dev/null +lastyear="" +for i in `/bin/ls -1 *.avi`; +do + filename=`echo "$i" | sed 's/.avi//g'` + year=`echo "$filename" | awk --field-separator - '{print $1}'` + month=`echo "$filename" | awk --field-separator - '{print $2}'` + day=`echo "$filename" | awk --field-separator - '{print $3}'` + + # set lastyear if we haven't done so yet + if [[ -z "$lastyear" ]]; + then + lastyear="$year" + fi + + # if we have changed year directories, remake the playlists for lastyear + if [[ "$year" != "$lastyear" ]]; + then + pushd "$SERVER/$lastyear" > /dev/null + $MAKE_VIDEOS -p -d . + popd > /dev/null + fi + + # make the destination directory if it is missing + if [[ ! -d "$SERVER/$year" ]]; + then + mkdir "$SERVER/$year" + fi + + # don't overwrite existing filenames + basefilename="$filename" + num=0 + while [[ -f "$SERVER/$year/$filename.avi" ]]; + do + ((num++)) + filename="$basefilename.$num" + done + + echo "Copying $i to $SERVER/$year/$filename.avi" + cp "$i" "$SERVER/$year/$filename.avi" + + lastyear=$year +done + +# remake the playlists for year +pushd "$SERVER/$year" > /dev/null +$MAKE_VIDEOS -p -d . +popd > /dev/null + +popd > /dev/null + diff --git a/make_home_videos.pl b/make_home_videos.pl new file mode 100755 index 0000000..a35a983 --- /dev/null +++ b/make_home_videos.pl @@ -0,0 +1,352 @@ +#!/usr/bin/perl + +# Prerequisites: +# This script requires the following linux packages to be installed: +# 1) dvgrab : apt-get install dvgrab +# 2) mencoder : http://www.mplayerhq.hu/homepage/design7/dload.html +# 3) transcode : vi sources.list; deb ftp://ftp.nerim.net/debian-marillat sarge main +# apt-get install transcode + +use Getopt::Std; + +############################################################ +# GLOBALS +############################################################ +$uid = "ajp"; +$gid = "ajp"; +#bitrate=3000 is a good choice to allow 2 90 minutes tapes to fit on one DVD +#bitrate=4500 is a good choice to allow 2 60 minute tapes to fit on one DVD +$bitrate = 4500; +$encoded_dir = "xvid_clips"; +$merge_dir = "daily_clips"; +$default_tape_name = "home_video"; +$playlist_extension = "pls"; +$dvgrab = "/usr/local/bin/dvgrab"; +$mencoder = "/usr/bin/mencoder"; +$mplayer = "/usr/bin/mplayer"; +$avimerge = "/usr/bin/avimerge"; +$avisplit = "/usr/bin/avisplit"; +$xvid_suffix = "_xvid$bitrate"; +$dvgrab_log = "../dvgrab.log"; +$mencoder_log = "../encoding_errors.log"; +$merge_log = "../avimerge.log"; +$max_dv_clip_size_in_mb = "1023"; #I had to keep it at this size to avoid errors until avisplit fixed them. +#$max_dv_clip_size_in_mb = "22000"; #avisplit still doesn't seem to do things right for large clips +# max_tape_grab_time=7200 Allows Max time of 2 hours to allow a tape to be dumped (good for 90 min tape) +# max_tape_grab_time=5400 Allows Max time of 1.5 hours to allow a tape to be dumped (good for 60 min tape) +$max_tape_grab_time = 5400; +$dvgrab_options = "--autosplit --timestamp --format dv2 --opendml --buffers 500"; +$encode_options_pass1 = "-mc 0 -oac mp3lame -lameopts cbr:cbr=128 -ffourcc XVID -fps 29.97 -ovc lavc "; +$encode_options_pass1.= "-lavcopts vcodec=mpeg4:vhq:vbitrate=$bitrate:keyint=15:vpass=1 -vf pp=ci"; +$encode_options_pass2 = "-mc 0 -oac mp3lame -lameopts cbr:cbr=128 -ffourcc XVID -fps 29.97 -ovc lavc "; +$encode_options_pass2.= "-lavcopts vcodec=mpeg4:vhq:vbitrate=$bitrate:keyint=15:vpass=2 -vf pp=ci"; +$mplayer_identify_options = "-vo null -ao null -identify -frames 0"; + +$SIG{ALRM} = \&stop_dvgrab; +$SIG{INT} = \&exit_now; +$SIG{SUSP} = \&exit_now; + +############################################################ +# COMMAND LINE OPTIONS & PROCESSING +############################################################ +getopts('hecrasvpmb:t:n:d:'); +if($opt_h) { &usage(); } + +sub usage() { + print "\n"; + print "Usage: $0 <options>\n"; + print " -e Encode captured raw video from camera.\n"; + print " -c Capture raw video from camera.\n"; + print " -m Merge videos clips found in the directory specified by -d <dir>. \n"; + print " -p Create video playlists for each year & month of video clips in the directory specified by -d <dir>.\n"; + print " -n <tape> Name of the tape to prepend to the front of each videoclip filename.\n"; + print " -d <dir> Directory we want to encode. If not specified, <dir>=<tape>\n"; + print " -a Use abbreviated names for merged video clips: yyyy-mm-dd.avi vs. <tape>.yyyy.mm.dd.avi\n"; + print " -s Simulate Mode. Don't encode, just tell me what you would do.\n"; + print " -h Show this usage\n"; + print " -v Show verbosity\n"; + print " -t <min> Time in minutes to grab from the camera (default "; print $max_tape_grab_time/60; print ")\n"; + print " -b <mb> Max size each clip grabbed should be in MB (default $max_dv_clip_size_in_mb)\n"; + print " -r Reboot the system once the script completes.\n"; + print "\n"; + print "File Structure:\n"; + print " <dir>/<tape>*.avi MiniDV Raw AVI files\n"; + print " <dir>/$encoded_dir/<tape>*.avi XVID compressed versions of the Raw AVI files\n"; + print " <dir>/$merge_dir/<tape>*.avi All XVID clips taken on each day combined together\n"; + print "\n"; + exit 1; +} + +if(!$opt_n && !$opt_d) { &usage(); } + +if(!$opt_c && !$opt_e && !$opt_p && $opt_m) { + if(!$opt_d) { &usage(); } + $opt_m = $opt_d; + $merge_only = 1; +} +else { $merge_only = 0; } + +if(!$opt_c && !$opt_e && !$opt_m && $opt_p) { + if(!$opt_d) { &usage(); } + $opt_p = $opt_d; + $playlist_only = 1; +} +else { $playlist_only = 0; } + +if(!$opt_d) { + system("mkdir -p $opt_n"); + chdir "$opt_n"; + $opt_d = $opt_n; +} else { + if(! -d $opt_d) { die "-E- Could not cd to $opt_d\n"; } + chdir "$opt_d"; + if(!$opt_n) { $opt_n = $default_tape_name; } +} +if($opt_t) { $max_tape_grab_time = $opt_t * 60; } +if($opt_b) { $max_dv_clip_size_in_mb = $opt_b; } +$video_directory = qx[pwd]; chomp($video_directory); + +print "\n-> Changed working directory to: $video_directory\n"; + +############################################################ +# MAIN +############################################################ +print "\n"; + +if($opt_c) { &capture_videos(); } +if($opt_e) { &encode_videos(); } +if($opt_m) { &merge_videos(); } +if($opt_p) { &create_playlists(); } + +# Fix the permissions +print "-> Fixing permissions: chown -R $uid.$gid\n"; +system("chown -R $uid.$gid ../$opt_d"); + +print "\n"; +if($opt_r) { &reboot_system(); } + +############################################################ +# SUBROUTINES +############################################################ + +sub exit_now { + print "-E- Interupt signal recieved. Exiting..\n"; + &stop_dvgrab(); + exit 1; +} + +# A little routine to stop dvgrab. It hangs when it hits the end of a tape. +sub stop_dvgrab { + my $prog = "dvgrab"; + my @pids; + my $numkilled = 0; + @pids = `ps -efw | grep $prog | grep -v grep | grep -v $0`; + foreach $pid ( @pids ) { + $oldpid = $pid; + if( $pid =~ s/^\S*\s*(\d*).*$prog.*\n$/$1/ ) { + if($pid eq "") { next; } + print "$date : -I- Stopped dvgrab Process id: \"$pid\"\n"; + system("kill -9 $pid"); + $numkilled++; + } + } + sleep 5; +} + +sub capture_videos { + if(! -f $dvgrab ){ die "-E- Missing required component: $dvgrab\n"; } + alarm($max_tape_grab_time); + $minutes = $max_tape_grab_time / 60; + print "-> Max tape grab time set to $minutes minutes\n"; + print "-> Grabbing raw video from the camera\n"; + print " Sending the status of grabbing the raw video to $dvgrab_log\n"; + print " Press CTRL-C once to stop the video grab and move onto the next step\n"; + print " Press CTRL-C three times to stop the video grab and exit\n"; + print "\n"; + if(!$opt_s) { + system("rm -f $dvgrab_log; touch $dvgrab_log; tail -f $dvgrab_log &"); + print "$dvgrab $dvgrab_options --size $max_dv_clip_size_in_mb ${opt_n}_\n"; + system("$dvgrab $dvgrab_options --size $max_dv_clip_size_in_mb ${opt_n}_ 2> $dvgrab_log"); + } + else { print " $dvgrab $dvgrab_options --size $max_dv_clip_size_in_mb ${opt_n}_ 2> $dvgrab_log\n"; } + alarm(0); + sleep 5; # Give some time to catch an interrupt if needed + print "-> Done grabbing video from camera\n\n"; +} + +sub encode_videos { + if(! -f $mencoder) { die "-E- Missing required component: $mencoder\n"; } + print "-> Creating high quality xvid copies of each video clip\n"; + + system("rm -f $mencoder_log"); + system("touch $mencoder_log"); + + my $current_file = ""; + my $current_output_file = ""; + my $prev_output_file_dv = ""; + my $prev_output_file_xvid = ""; + + print " Processing All Videos in Directory: $video_directory\n"; + + opendir(VIDEODIR, $video_directory) or die "-E- Could not open: $video_directory"; + my @all_files = readdir VIDEODIR; + closedir(VIDEODIR); + @all_files = sort @all_files; + system "mkdir -p $encoded_dir"; + + foreach $current_file (@all_files) { + next if -d $current_file; + next if (!($current_file =~ /\.avi$/)); + $current_output_file = $current_file; + $current_output_file =~ s/\.avi$/$xvid_suffix\.avi/; + if (-f "./$encoded_dir/$current_output_file") { + print " skipping $current_file - ./$encoded_dir/$current_output_file already exists.\n"; + next; + } + print " $current_file -> ./$encoded_dir/$current_output_file\n"; + if($opt_v) { + print "$mencoder $encode_options_pass1 -o ./$encoded_dir/$current_output_file -idx $current_file\n"; + print "$mencoder $encode_options_pass2 -o ./$encoded_dir/$current_output_file -idx $current_file\n"; + } + if(!$opt_s) { + $tempfile = `tempfile`; chomp($tempfile); + system("$mencoder $encode_options_pass1 -o ./$encoded_dir/$current_output_file -idx $current_file 2>$tempfile"); + system("$mencoder $encode_options_pass2 -o ./$encoded_dir/$current_output_file -idx $current_file 2>>$tempfile"); + if(! -e "./$encoded_dir/$current_output_file") { + print "-WARNING- File could not be encoded. Attempting repair through avisplit. Encoding reattempt will follow.\n"; + if(! -f $avisplit) { die "-E- Missing required component: $avisplit\n"; } + $split_size = $max_dv_clip_size_in_mb * 10; + system("$avisplit -s $split_size -i $current_file"); + #print "$avisplit -s $split_size -i $current_file\n"; + system("mv $current_file-0000 $current_file"); + system("$mencoder $encode_options_pass1 -o ./$encoded_dir/$current_output_file -idx $current_file 2>>$tempfile"); + system("$mencoder $encode_options_pass2 -o ./$encoded_dir/$current_output_file -idx $current_file 2>>$tempfile"); + if(! -e "./$encoded_dir/$current_output_file") { + print "-E- Errors encountered encoding $current_file\n"; + system("echo \"-> Errors encountered encoding $current_file\" >> $mencoder_log"); + system("cat $tempfile >> $mencoder_log"); + } + } + unlink "$tempfile"; + sleep 2; # Give some time to catch an interrupt if needed + } + } + + $current_output_file = ""; + print "-> Done creating xvid copies\n\n"; +} + +sub merge_videos { + if(! -f $avimerge) { die "-E- Missing required component: $avimerge\n"; } + print "-> Now creating merged videos for each day\n"; + + system("rm -f $merge_log"); + system("touch $merge_log"); + system "mkdir -p $merge_dir"; + + if($merge_only) { + print "-> Merging all videos by day from this directory: $video_directory\n"; + opendir(VIDEODIR, "$video_directory") or die "-E- Could not open: $video_directory"; + } else { + print "-> Merging all videos by day from this directory: $video_directory/$encoded_dir\n"; + opendir(VIDEODIR, "$video_directory/$encoded_dir") or die "-E- Could not open: $video_directory/$encoded_dir"; + } + print "\n"; + + my @all_files = readdir VIDEODIR; + closedir(VIDEODIR); + @all_files = sort @all_files; + foreach $current_file (@all_files) { + next if -d $current_file; + next if (!($current_file =~ /\.avi$/)); + next if (system("$mplayer $mplayer_identify_options $current_file 2>&1 | grep \"Missing video stream\" > /dev/null") == 0); + $current_output_file = $current_file; + $current_output_file =~ s/_[\-0-9]{8}\.avi$/\.avi/; + $current_output_file =~ s/_[\-0-9]{8}$xvid_suffix\.avi$/\.avi/; + if($opt_a && $current_output_file =~ /.*?(\d\d\d\d)\.(\d\d)\.(\d\d)/) { + $current_output_file = "$1-$2-$3.avi"; + if( -f "./$merge_dir/$current_output_file" ) { + my $num = 1; + while(-f "./$merge_dir/$1-$2-$3.$num.avi") { $num++; } + $current_output_file = "$1-$2-$3.$num.avi"; + } + } + if (!($prev_output_file eq $current_output_file) && !($prev_output_file eq "")) { + print " Creating merged video: ./$merge_dir/$prev_output_file_xvid\n"; + if($opt_v) { + print " $avimerge -c -o ./$merge_dir/$prev_output_file_xvid -i $files_to_merge\n"; + } + if(!$opt_s) { + system("$avimerge -c -o ./$merge_dir/$prev_output_file_xvid -i $files_to_merge >> $merge_log"); + sleep 2; # Give some time to catch an interrupt if needed + } + $files_to_merge = ""; + print "\n"; + } + #store all the file names into one variable + if($merge_only) { + $files_to_merge .= " ./$current_file"; + print " adding ./$current_file to merge list\n"; + } else { + $files_to_merge .= " ./$encoded_dir/$current_file"; + print " adding ./$encoded_dir/$current_file to merge list\n"; + } + $prev_output_file = $current_output_file; + $prev_output_file_xvid = $current_output_file; + } + + #Now merge the last one + if (!($current_output_file eq "")) { + print " Creating merged video: ./$merge_dir/$prev_output_file_xvid\n"; + if($opt_v) { + print " $avimerge -o ./$merge_dir/$prev_output_file_xvid -i $files_to_merge\n"; + } + if(!$opt_s) { + system("$avimerge -o ./$merge_dir/$prev_output_file_xvid -i $files_to_merge"); + } + $files_to_merge = ""; + print "\n"; + } + + print "-> Done creating merged videos for each day\n\n"; +} + +sub create_playlists { + print "-> Now creating playlists of merged videos for each month & year\n"; + + if($playlist_only) { + print "-> Creating playlists for each month & year of clips from this directory: $video_directory\n"; + opendir(VIDEODIR, "$video_directory") or die "-E- could not open: $video_directory"; + chdir "$video_directory"; + } else { + print "-> Creating playlists for each month & year of clips from this directory: $video_directory/$merge_dir\n"; + opendir(VIDEODIR, "$video_directory/$merge_dir") or die "-E- could not open: $video_directory/$merge_dir"; + chdir "$video_directory/$merge_dir"; + } + + my @all_files = readdir VIDEODIR; + closedir(VIDEODIR); + @all_files = sort @all_files; + + print " Removing all existing playlists from the directory\n"; + system("rm *.$playlist_extension > /dev/null 2>&1"); + + foreach $file (@all_files) { + next if -d $file; + next if ($file !~ /\.avi$/ && $file !~ /\.mpg$/); + if($opt_a) { $file =~ /(\d\d\d\d)-(\d\d)-(\d\d)/; $year = $1; $month = $2; } + else { $file =~ /(\d\d\d\d).(\d\d).(\d\d)/; $year = $1; $month = $2; } + print " Adding $file to $year.$playlist_extension & $year-$month.$playlist_extension\n"; + system("echo \"$file\" >> $year.$playlist_extension"); + system("echo \"$file\" >> $year-$month.$playlist_extension"); + } + chdir "$video_directory"; +} + +# Reboot the system if requested +sub reboot_system { + print "-> Rebooting the system in 10 seconds... Press CTRL-C to abort...\n"; + sleep 10; + system("sudo /sbin/reboot") if(!$opt_s); +} + diff --git a/merge_all_new_mpg_clips.pl b/merge_all_new_mpg_clips.pl new file mode 100755 index 0000000..6d5e81c --- /dev/null +++ b/merge_all_new_mpg_clips.pl @@ -0,0 +1,56 @@ +#!/usr/bin/perl + +$mpg_dir = "/home/pictures"; +$video_dir = "/home/videos/HomeVideos"; + +opendir(DIR, "$mpg_dir"); +@year_dirs = grep { /\d\d\d\d/ } readdir(DIR); +closedir(DIR); +chdir $mpg_dir; + +foreach $year_dir (sort @year_dirs) { + chdir "$mpg_dir/$year_dir"; + #print "Parsing $mpg_dir/$year_dir\n"; + opendir(DIR, "$mpg_dir/$year_dir"); + @month_dirs = readdir(DIR); + closedir(DIR); + foreach $month_dir (sort @month_dirs) { + chdir "$mpg_dir/$year_dir/$month_dir"; + #print "Parsing $year_dir/$month_dir\n"; + opendir(DIR, "$mpg_dir/$year_dir/$month_dir"); + @mpg_files = grep { /\.mpg|\.MPG/ } readdir(DIR); + closedir(DIR); + foreach $mpg_file (sort @mpg_files) { + #print "Found $year_dir/$month_dir/$mpg_file\n"; + $mpg_file =~ /(\d\d)(\w\w\w)/; $day = $1; + $month_dir =~ /(\d\d)/; $month = $1; + $year = $year_dir; + $merged_file = "$video_dir/$year/$year-$month-$day.mpg"; + $new_merged_file = "$merged_file.new"; + if(-e "$merged_file") { next; } + if(-e "$new_merged_file") { + print "Merging $mpg_file with $new_merged_file\n"; + #print "/usr/bin/mpgtx -j $new_merged_file $mpg_file -o $new_merged_file.tmp\n"; + #print "mv \"$new_merged_file.tmp\" \"$new_merged_file\"\n"; + system("/usr/bin/mpgtx -j \"$new_merged_file\" \"$mpg_file\" -o \"$new_merged_file.tmp\""); + system("mv \"$new_merged_file.tmp\" \"$new_merged_file\""); + $new_files{$new_merged_file} = 1; + } else { + print "Merging $mpg_file with $new_merged_file\n"; + #print "cp $mpg_file $new_merged_file\n"; + system("cp \"$mpg_file\" \"$new_merged_file\""); + $new_files{$new_merged_file} = 1; + } + } + } +} + +foreach $file (keys %new_files) { + $newfile = $file; + $newfile =~ s/\.new//g; + #print "mv $file $newfile\n"; + system("mv $file $newfile"); +} + + + diff --git a/merge_mpg_clips b/merge_mpg_clips new file mode 100755 index 0000000..2528772 --- /dev/null +++ b/merge_mpg_clips @@ -0,0 +1,8 @@ +#!/bin/bash + +echo "-> Merging the following clips: $*" + +/usr/bin/mpgtx -j $* -o merged_clips.mpg + +echo "-> Clips merged to: merged_clips.mpg" + diff --git a/mov2avi b/mov2avi new file mode 100755 index 0000000..f9cf2d1 --- /dev/null +++ b/mov2avi @@ -0,0 +1,7 @@ +#!/bin/bash + +#transcode -i $* -y ffmpeg -F wmv2 -o $*.avi +#find . -name "*.mov" | xargs -l1 /home/ajp/bin/mov2avi + +mencoder -o "$*.avi" -ovc lavc -oac lavc -lavcopts acodec=mp3:vcodec=mpeg4:vbitrate=6000 -srate 48000 "$*" + diff --git a/setprompt.pl b/setprompt.pl new file mode 100755 index 0000000..c1c4280 --- /dev/null +++ b/setprompt.pl @@ -0,0 +1,50 @@ +#!/usr/bin/perl + +$host = `hostname`; chomp($host); +%hostaliases = ( + "hpesajp" => "hp", + "pippin" => "pippin", + ); +$pwd = $ENV{PWD}; + +@aliases = ( + "/tmp_mnt/auto=>", + "$ENV{HOME}=>~", + "/net/=>", + "/home/=>/~", + ); + +$host = $hostaliases{$host} if defined $hostaliases{$host}; +foreach $alias (@aliases) { + @alias = split(/=>/, $alias); + if ( $alias[0] ne "" ) { + $pwd =~ s/$alias[0]/$alias[1]/; + } +} +if ($pwd =~ /^(~)?(.+)(\/.*?\/.*?\/.*)/) { + @prec = split(/\//, $2); + $pwd = "$1($#prec)$3" if $#prec; +} + +while ($pwd =~ /[\/]+([^\/]{13,})/) { + $segment = $oldseg = $1; + $segment =~ s/^(.{4}).*?(.{5})$/$1\.\.\.$2/; + $pwd =~ s/$oldseg/$segment/; +} +$whoami = `whoami`; +chomp( $whoami ); +if ( $whoami eq "root" ) { + $user = "\\[[41m\\]ROOT\\[[49m\\]:"; +} elsif( $whoami ne "ajp" ) { + $user = "\\[[41m\\]$whoami\\[[49m\\]@"; +} + +#Colors +if ( $ENV{COLOR_PROMPT} ne "no" ) +{ + $host = "\\[[32m\\]$host\\[[39m\\]" if $host; + $pwd = "\\[[36m\\]$pwd\\[[39m\\]"; +} + +print "$user$host:$pwd> "; + diff --git a/vob2avi b/vob2avi new file mode 100755 index 0000000..3fb7656 --- /dev/null +++ b/vob2avi @@ -0,0 +1,8 @@ +#!/bin/bash + +BITRATE=6000 +cat "$1" | mencoder -oac mp3lame -ffourcc XVID -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=$BITRATE - -o "$2" + +# Deinterlace - DV to DIVX AVI +# cat "$1" | mencoder -oac mp3lame -lameopts cbr:cbr=256 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=6000 -vf pp=ci - -o "$2" + -- 2.34.1