1

三日目!

新しい出力ファイルtxt:

Filename          : %FILENAME%.%EXTENSION%
Sizes             : 1.66 GiB for 1h 58mn 0s 615ms at 2 014 Kbps
Writing_App       : VirtualDubMod 1.5.10.2 (build 2542/release)

Video_#0          : DivX 5 MPEG-4 Visual at 1 812 Kbps, with 1.49 GiB (90%)
Aspect            : 704 x 368 (1.913) at 23.976 fps
Writing_App_V     : DivX 6.8.5 (UTC 2009-08-20)

Audio_#0          : AC3
Mode_#0           : Constant
Sample_#0         : 48000
Channels_#0       : 2
Size_#0           : 162 MiB (10%)
Title_#0          : 

Audio_#1          : MP3
Mode_#1           : Constant
Sample_#1         : 44100
Channels_#1       : 2
Size_#1           : 101 MiB (11%)
Title_#1          : 

rem Required to use Delayed !Variable! Expansion
setlocal EnableDelayedExpansion
rem Create all text files (copied from your example)
rem for %%T in ("*.avi") do "C:\Meus Programas\MEDIA\MediaInfo CLI\MediaInfo.exe" --output=file://"C:\Meus Programas\MEDIA\MediaInfo CLI\luis4.csv" --logfile="%%~nT.cod" "%%T"
rem echo.>TXTCollector.lst
rem for %%Z in ("*.cod") do type "%%~Z">>TXTCollector.lst && echo ===========================================>>TXTCollector.lst && echo.>>TXTCollector.lst
rem ren TXTCollector.lst TXTCollector.txt
rem Process each file
for %%F in (*.cod) do (
   rem Delete variables that may not exist in certain files
   set Audio_#1=
   rem Read variables from this text file (explained above)
   for /F "usebackq tokens=1* delims=:" %%a in ("%%F") do (
      for %%c in (%%a) do set %%c=%%b
      set %%c=!%%c:~1!
   )
   ECHO VirtualDub.Open("r:\\%%~nF.avi","",0);>"%%~nF.vcf"
   ECHO VirtualDub.RemoveInputStreams();>>"%%~nF.vcf"
)

すべてのbatファイルを書き込み、デバッグを開始しました。私の最初の2行で問題が発生しました。このバッチはスクリプトファイル(.vcf)を作成するためのものであり、>>を使用したリダイレクトは機能しなくなりました。
ECHO VirtualDub.Open( "r:\ %%〜nF.avi"、 ""、0);> "%%〜nF.vcf"
パラメーター%%〜nF.vcfで正しい名前のファイルを作成しましたが、フラッシュしましたファイル内
で/F"usebackq tokens = 1 * delims =:" %% a in( "%% F")
ECHO VirtualDub.RemoveInputStreams(); >> "%%〜nF.vcf"によって実行されたすべての作業が生成されました%〜nF.vcfというファイル(これは、パラメーターが機能しなくなったことを意味します)。EnableDelayedExpansion
をオフにしようとしましたが、同じ結果になりました。多分それは括弧のためです。
再び立ち往生!


2日目!

OK、@ Aacini、ありがとう...再開しようとします...処理するファイルがたくさんあります...すべてのファイルに対して.txtを生成します。各.txtを読み取り、元のファイルをどう処理するかを決定するバッチを実行しようとしています。

TXTファイル:

General
ORIGINAL_FILENAME.avi
818 MiB for 1h 46mn 25s 14ms
AVI-Mux GUI 1.16.11, Dec 15 2004  14:51:34

Video #0
XviD MPEG-4 Visual, with 624 MiB (76%),  at 23.976 fps
XviD 1.2.1 (UTC 2008-12-04)

Audio #0
MPEG Audio Version 1 Layer 3
Variable
44.1 KHz
2 channels
85.8 MiB (10%)
Portuguese BR - 3LT0N
LAME3.93a

Audio #1
MPEG Audio Version 1 Layer 3
Variable
48.0 KHz
2 channels
97.5 MiB (12%)
English - 3LT0N
LAME3.98r

私が今まで考えていたバッチ...

IF DOESNT EXIST "Audio #1" in TXT goto :ONEAUDIO
IF EXIST "AC-3" in TXT goto :AC3

Set Value 0 from txt line 02 = filename

"for audio 1"
Set Value 1 from txt line 12 = Variable OR Constant
Set Value 2 from txt line 13 = 44.1 OR 48.0

"for audio 2"
Set Value 3 from txt line 21 = Variable or Constant
Set Value 4 from txt line 22 = 44.1 or 48.0

if value 1 = variable goto :variable1 ELSE goto :constant1

:variable1
(will execute some commands here)
if value 2 = 44.1 goto :22 ELSE goto :24

:22
(will execute some commands here)
goto :jump24

:24
(will execute some commands here)

:jump24
if value 3 = variable goto :variable2 ELSE goto :constant2

:variable2
(will execute some commands here)
if value 4 = 44.1 goto :44 ELSE goto :48

:44
(will execute some commands here)
goto :end

:48
(will execute some commands here)
goto :end

:constant1
(will execute some commands here)
goto :end

:constant2
(will execute some commands here)
goto :end


:ONEAUDIO
later
goto :end

:AC3
later
goto :end

:end

これは問題が発生します...私はFOR(LOOP)についてしか知りませんが、私が知る限り、GOTO:EXAMPLEでは機能しません。たぶん2つのバッチファイルを使用して動作します...filename.txtを解析する2番目のバッチを呼び出すためのループ

私が考えていたもう1つの方法は、すべてのビデオファイルに対して「バッチモデル」をバッチ生成し、次にビデオファイルの.txtを読み取り、「バッチモデル」の文字列を置き換えることです。しかし、これは私にはあまりにも進んでいます。


初日:

バッチファイルを1つに結合し、このバッチにファイル.txtを読み取って、同じディレクトリにある一連のビデオの次のステップを決定する機能を追加するためのヘルプが必要です。オーディオをaviから変換して、編集プログラムとの互換性を生み出すことがすべてです...

手順は次のとおりです。

1)ビデオとオーディオに関する基本情報を含むすべてのビデオファイルの.txtを生成します。

for %%a in ("*.avi") do "C:\Meus Programas\MEDIA\MediaInfo CLI\MediaInfo.exe" --output=file://"C:\Meus Programas\MEDIA\MediaInfo CLI\luis.csv" --logfile="%%~na.txt" "%%a"

または、すべての小さなファイルで大きなファイルを生成します。

for %%a in ("*.avi") do "C:\Meus Programas\MEDIA\MediaInfo CLI\MediaInfo.exe" --output=file://"C:\Meus Programas\MEDIA\MediaInfo CLI\luis.csv" --logfile="%%~na.txt" "%%a"
echo.>TXTCollector.lst
for %%i in ("*.txt") do type "%%~i">>TXTCollector.lst && echo ===========================================>>TXTCollector.lst && echo.>>TXTCollector.lst && del "%%~i"
ren TXTCollector.lst TXTCollector.txt

出力ファイルの例:

General           : ORIGINAL NAME FOR THE VIDEO FILES.avi
Format            : 820 MiB for 1h 26mn 38s 777ms at 1 324 Kbps
Writing App.      : VirtualDubMod 1.5.10.2 (build 2540/release)

Video #0          : XviD MPEG-4 Visual at 925 Kbps, with 574 MiB (70%)
Aspect            : 608 x 336 (16:9) at 23.976 fps
Writing App.      : XviD 1.2.1 (UTC 2008-12-04)

Audio #0          : 119 MiB (15%), AC-3  ,  
Infos             : Constant at 192 Kbps, 48.0 KHz, 1 channel
Writing App.      : , 

Audio #1          : 110 MiB (12%), MPEG Audio Version 1 Layer 3,  
Infos             : Constant at 128 Kbps, 48.0 KHz, 2 channels
Writing App.      : LAME3.97 , -m j -V 4 -q 2 -lowpass 17 -b 128

2)そこから、ファイルからオーディオ形式を読み取り、ファイルを特定のフォルダーに移動し、そのフォルダーでバッチを実行して変換を実行します。

コウモリの例。

REM @echo off
:: create the virtual drives and go to the root of drive r:
set ORIGINALDIR=%~d0
subst r: "%cd%"
md JobDone
subst s: "%cd%\JobDone"
r:
cd\
for %%w in ("*.avi") do ECHO VirtualDub.Open("r:\\%%~w","",0);>"%%~nw.vcf"
for %%w in ("*.avi") do ECHO VirtualDub.RemoveInputStreams();>>"%%~nw.vcf"
for %%w in ("*.avi") do ECHO VirtualDub.stream[0].SetSource(0x73647561,0,1);>>"%%~nw.vcf"
for %%w in ("*.avi") do ECHO VirtualDub.stream[0].DeleteComments(1);>>"%%~nw.vcf"
for %%w in ("*.avi") do ECHO VirtualDub.stream[0].AddComment(0x00000003,"","Portuguese");>>"%%~nw.vcf"
REM for %%w in ("*.avi") do ECHO VirtualDub.stream[0].AddComment(0x00000003,"","English");>>"%%~nw.vcf"
for %%w in ("*.avi") do ECHO VirtualDub.stream[0].AdjustChapters(1);>>"%%~nw.vcf"
for %%w in ("*.avi") do ECHO VirtualDub.stream[0].SetMode(1);>>"%%~nw.vcf"
for %%w in ("*.avi") do ECHO VirtualDub.stream[0].SetInterleave(1,500,1,0,0);>>"%%~nw.vcf"
for %%w in ("*.avi") do ECHO VirtualDub.stream[0].SetClipMode(1,1);>>"%%~nw.vcf"
for %%w in ("*.avi") do ECHO VirtualDub.stream[0].SetConversion(0,0,0,0,0);>>"%%~nw.vcf"
for %%w in ("*.avi") do ECHO VirtualDub.stream[0].SetVolume();>>"%%~nw.vcf"
for %%w in ("*.avi") do ECHO VirtualDub.stream[0].SetCompression(85,48000,2,0,16000,1,12,"AQAEAAAAgAEBAAAA");>>"%%~nw.vcf"
for %%w in ("*.avi") do ECHO VirtualDub.stream[0].EnableFilterGraph(0);>>"%%~nw.vcf"
for %%w in ("*.avi") do ECHO VirtualDub.stream[0].filters.Clear();>>"%%~nw.vcf"
for %%w in ("*.avi") do ECHO VirtualDub.stream[1].SetSource(0x73647561,1,1);>>"%%~nw.vcf"
for %%w in ("*.avi") do ECHO VirtualDub.stream[1].DeleteComments(1);>>"%%~nw.vcf"
for %%w in ("*.avi") do ECHO VirtualDub.stream[1].AddComment(0x00000003,"","English");>>"%%~nw.vcf"
REM for %%w in ("*.avi") do ECHO VirtualDub.stream[1].AddComment(0x00000003,"","Portuguese");>>"%%~nw.vcf"
for %%w in ("*.avi") do ECHO VirtualDub.stream[1].AdjustChapters(1);>>"%%~nw.vcf"
for %%w in ("*.avi") do ECHO VirtualDub.stream[1].SetMode(1);>>"%%~nw.vcf"
for %%w in ("*.avi") do ECHO VirtualDub.stream[1].SetInterleave(1,500,1,0,0);>>"%%~nw.vcf"
for %%w in ("*.avi") do ECHO VirtualDub.stream[1].SetClipMode(1,1);>>"%%~nw.vcf"
for %%w in ("*.avi") do ECHO VirtualDub.stream[1].SetConversion(0,0,0,0,0);>>"%%~nw.vcf"
for %%w in ("*.avi") do ECHO VirtualDub.stream[1].SetVolume();>>"%%~nw.vcf"
for %%w in ("*.avi") do ECHO VirtualDub.stream[1].SetCompression(85,48000,2,0,16000,1,12,"AQAEAAAAgAEBAAAA");>>"%%~nw.vcf"
for %%w in ("*.avi") do ECHO VirtualDub.stream[1].EnableFilterGraph(0);>>"%%~nw.vcf"
for %%w in ("*.avi") do ECHO VirtualDub.stream[1].filters.Clear();>>"%%~nw.vcf"
for %%w in ("*.avi") do ECHO VirtualDub.video.DeleteComments(1);>>"%%~nw.vcf"
for %%w in ("*.avi") do ECHO VirtualDub.video.AddComment(0x00000002,"ISFT","VirtualDubMod 1.5.10.2 (build 2542/release)");>>"%%~nw.vcf"
for %%w in ("*.avi") do ECHO VirtualDub.video.AdjustChapters(1);>>"%%~nw.vcf"
for %%w in ("*.avi") do ECHO VirtualDub.video.SetDepth(24,24);>>"%%~nw.vcf"
for %%w in ("*.avi") do ECHO VirtualDub.video.SetMode(0);>>"%%~nw.vcf"
for %%w in ("*.avi") do ECHO VirtualDub.video.SetFrameRate(0,1);>>"%%~nw.vcf"
for %%w in ("*.avi") do ECHO VirtualDub.video.SetIVTC(0,0,-1,0);>>"%%~nw.vcf"
for %%w in ("*.avi") do ECHO VirtualDub.video.SetCompression();>>"%%~nw.vcf"
for %%w in ("*.avi") do ECHO VirtualDub.video.filters.Clear();>>"%%~nw.vcf"
for %%w in ("*.avi") do ECHO VirtualDub.SaveAVI("s:\\%%~nw.avi");>>"%%~nw.vcf"
for %%w in ("*.avi") do ECHO VirtualDub.Close();>>"%%~nw.vcf"

:: Execute the script file just created
for %%a in ("*.vcf") do "C:\VirtualDubMod\VirtualDubMod.exe" /r /s"%%~fa" /x && del "%%~fa"

:: go back to previous folder and delete the virtual drives.
%ORIGINALDIR%
REM %~d0
subst r: /d
subst s: /d

:end

各ジョブのフォルダーとバッチがあります。基本的にそれは3つの異なるプロセスです:AC3オーディオを備えたビデオファイルは異なるアプローチを必要とします...MP3を備えたビデオファイルはすべてを一定のビットレートと48000のサンプリングレートに変換します。すでに一定のビットレートを持つビデオファイルは、変換する必要はありませんが、ただのリマックスです。

ONE AUDIO
+AC3 AUDIO
--2 CHANNELS
--6 CHANNELS
+MP3 AUDIO
--44100 SAMPLING RATE
--48000 SAMPLING RATE
+JUST REMUX AUDIO

TWO AUDIOS
+AC3
--2ch-2ch
--2ch-6ch
--6ch-2ch
--6ch-6ch
+1ST AUDIO ONLY
--44100
--48000
+2ND AUDIO ONLY
--44100
--48000
+44100-44100
+44100-48000
+48000-41000
+48000-48000
+INVERT AUDIO (just change the order of the audio tracks, no converting)
+JUST REMUX

これが楽しみの始まりです。

オーディオが1つしかないビデオファイルはまれです...バッチから外れる可能性があります。すべてを実行するbatファイルが1つあった場合、(*。avi)のLOOPは機能しなくなります。これは、すべてのビデオファイルに独自のプロパティがあるためです。ファイル名に基づいてスクリプト(またはスクリプトを作成するための新しいバット)を作成します。

Audio #0          : 119 MiB (15%), AC-3  ,  
Infos             : Constant at 192 Kbps, 48.0 KHz, 1 channel
Writing App.      : , 

考えてみてください...オーディオが1つだけの場合...次に:ac3(2chは2チャネル変換を実行します。6チャネル変換を実行しない場合)はac3(定数->単にremux-> else(48.0の場合) 48.0変換を実行します。それ以外の場合は41000変換を実行します)

それは「非常に単純」ですが、ファイルには2つのオーディオがあります....今では私には非常に困難です。

Audio #0          : 119 MiB (15%), AC-3  ,  
Infos             : Constant at 192 Kbps, 48.0 KHz, 1 channel
Writing App.      : , 

Audio #1          : 110 MiB (12%), MPEG Audio Version 1 Layer 3,  
Infos             : Constant at 128 Kbps, 48.0 KHz, 2 channels
Writing App.      : LAME3.97 , -m j -V 4 -q 2 -lowpass 17 -b 128

何かを説明させてください:「Justremux」と「MP3s変換」はビデオファイルからの内部オーディオを使用します。「AC3変換」はそれほど単純ではありません。ファイルからオーディオを引き出し、他のアプリで1回目の変換を行ってから、元のプログラムで2回目の変換を行う必要があります。

md audio1
for %%x in ("*.avi") do "C:\VirtualDubMod\ffmpeg.exe" -i "%%x" -vn -map 0:1 -acodec copy "%%~dpxaudio1\%%~nx.audio1.ac3"

md audio2
for %%u in ("*.avi") do "C:\VirtualDubMod\ffmpeg.exe" -i "%%u" -vn -map 0:2 -acodec copy "%%~dpuaudio2\%%~nu.audio2.ac3"

cd audio1
for %%y in ("*.ac3") do "c:\Meus Programas\AUDIO\BeSweet\BeSweet.exe" -core( -input "%%~fy" -output "%%~dpy%%~ny.wav" -2ch ) -azid( -c light ) -ota( -hybridgain ) && del "%%~y"

cd..
cd audio2
for %%y in ("*.ac3") do "c:\Meus Programas\AUDIO\BeSweet\BeSweet.exe" -core( -input "%%~fy" -output "%%~dpy%%~ny.wav" -2ch ) -azid( -c light -L -3db ) -ota( -hybridgain ) && del "%%~y"

変換用に生成されたスクリプトは、次のように分割できます。1)処理するビデオファイル2)最初のオーディオと変換obsのオプション:mp3(ファイルを指定する必要はありません。内部オーディオのコードです)AC3( .wavファイル名を指定します)3)2番目のオーディオと変換のオプション4)ビデオと変換のオプション5)新しいファイルを保存するファイル名6)プロセスの最後にアプリを閉じるコマンド。

バッチは、これらのピースを1つずつ貼り付けるスクリプト(またはスクリプトを生成するための新しいバッチ)を作成できます。バッチにはピースの「カタログ」を含めることができ、オーディオに関する情報から適切なものを選択できます。

これは可能ですか?

4

2 に答える 2

0

Ok。私はこのすべての混乱から何かを明らかにしようとします...

テキストファイルの2つの異なる形式を示します。最初のもの(出力ファイルの例の下)は処理が簡単です。このファイルを変更して、各行の見出しが一意であり、アンダースコアまたは数字(有効なバッチ変数名)を挿入してスペースを含まないようにすることができると思います。これは、私のプログラムで必要な形式のサンプルファイルです。

General           : ORIGINAL NAME FOR THE VIDEO FILES.avi
Format            : 820 MiB for 1h 26mn 38s 777ms at 1 324 Kbps
Writing_App       : VirtualDubMod 1.5.10.2 (build 2540/release)

Video_#0          : XviD MPEG-4 Visual at 925 Kbps, with 574 MiB (70%)
Aspect            : 608 x 336 (16:9) at 23.976 fps
Writing_App_V0    : XviD 1.2.1 (UTC 2008-12-04)

Audio_#0          : 119 MiB (15%), AC-3  ,  
Infos_A0          : Constant at 192 Kbps, 48.0 KHz, 1 channel
Writing_App_A0    : , 

Audio_#1          : 110 MiB (12%), MPEG Audio Version 1 Layer 3,  
Infos_A1          : Constant at 128 Kbps, 48.0 KHz, 2 channels
Writing_App_A1    : LAME3.97 , -m j -V 4 -q 2 -lowpass 17 -b 128

次のコードは、前のファイルを読み取り、コロンの左側の変数を右側の値で定義します。

rem Read each line from the text file
for /F "tokens=1* delims=:" %%a in (thefile.txt) do (
   rem Eliminate spaces from variable name
   for %%c in (%%a) do set %%c=%%b
   rem Eliminate first character (space) from variable value
   set %%c=!%%c:~1!
)

前のループが終了した後、各変数の値を直接取得できます。たとえば、ECHO!Format!または定義されていない場合Audio_#1 ECHO OneAudioまたはIF"!Audio_#0:AC-3 =!" EQU "!Audio_#0!" ECHO Audio#0はAC-3"などではありません。

これは、すべてのピースをまとめる最初の試みです。

@echo off
rem Required to use Delayed !Variable! Expansion
setlocal EnableDelayedExpansion
rem Create all text files (copied from your example)
for %%a in ("*.avi") do "C:\Meus Programas\MEDIA\MediaInfo CLI\MediaInfo.exe" --output=file://"C:\Meus Programas\MEDIA\MediaInfo CLI\luis.csv" --logfile="%%~na.txt" "%%a"
rem Process each file
for %%f in (*.txt) do (
   rem Delete variables that may not exist in certain files
   set Audio_#1=
   rem Read variables from this text file (explained above)
   for /F "usebackq tokens=1* delims=:" %%a in ("%%f") do (
      for %%c in (%%a) do set %%c=%%b
      set %%c=!%%c:~1!
   )
   rem Identify each case
   set AC-3=NO
   if "!Audio_#0:AC-3=!" neq "!Audio_#0!" set AC-3=YES
   if not defined Audio_#1 (
      rem One Audio
      if !AC-3! equ YES (
         rem Process One Audio with AC-3
      ) else (
         rem Process One Audio with no AC-3
      )
   ) else (
      rem Two Audios
      if "!Audio_#1:AC-3=!" neq "!Audio_#1!" set AC-3=YES
      if !AC-3! equ YES (
         rem Process Two Audios with AC-3
      ) else (
         rem Process Two Audios with no AC-3
      )
   )
)

このコードを理解し、いくつかのテストを行ってから、新しい質問を投稿してください。

アントニオ

補遺「変数名からスペースを削除する」の説明

このFORコマンドの場合:

for /F "tokens=1* delims=:" %%a in (thefile.txt) do (
   set %%a=%%b
)

この行を読んでください:

General           : ORIGINAL NAME FOR THE VIDEO FILES.avi

実行されるSETコマンドは次のとおりです。

   set General           = ORIGINAL NAME FOR THE VIDEO FILES.avi

このように、変数名は正確に「General <11spaces>」であるため、

echo %General%               does NOT work
echo %General           %    OK

この混乱を避けるために、変数名のスペースを削除する必要があります。

このコマンドを実行する場合は、次のことを知っておく必要があります。

for %%a in (    one        two         threee      ) do echo "%%a"

結果は次のとおりです。

"one"
"two"
"three"

したがって、FORコマンドを使用してスペースを削除できます。わかった?

于 2012-11-01T05:18:18.223 に答える
0

バッチは機能しており、あらゆる種類のファイルに対してテストされています。すべての助けをありがとう。このバッチは意図したことを実行していますが、実行する作業がいくつかあります。たくさん掃除できます。後で...

@echo off
rem create the virtual drives needed to VirtualDubMod work
set ORIGINALDRIVE=%~d0
subst r: "%cd%"
md JobDone
subst s: "%cd%\JobDone"
r:
cd\
rem Required to use Delayed !Variable! Expansion
setlocal EnableDelayedExpansion
rem Create all text files (copied from your example)
for %%T in ("*.avi") do "C:\Meus Programas\MEDIA\MediaInfo CLI\MediaInfo.exe" --output=file://"C:\Meus Programas\MEDIA\MediaInfo CLI\luis4.csv" --logfile="%%~nT.cod" "%%T"
rem Create "catalogue" from all INFOs created.
echo.>TXTCollector.lst
for %%Z in ("*.cod") do type "%%~Z">>TXTCollector.lst && echo ===========================================>>TXTCollector.lst && echo.>>TXTCollector.lst
ren TXTCollector.lst TXTCollector.txt
rem Process each file
for %%F in (*.cod) do (
   rem Setting the variables needed!
   set NAMEFILE=%%~nF
   rem Delete variables that may not exist in certain files
   set Audio_#1=
   rem Read variables from this text file (explained above)
   for /F "usebackq tokens=1* delims=:" %%a in ("%%F") do (
      rem Eliminate spaces from variable name?????????
      for %%c in (%%a) do (
         set %%c=%%b
         rem Eliminate first character (space) from variable value
         set %%c=!%%c:~1!
      )
   )
   ECHO VirtualDub.Open^("r:\\!NAMEFILE!.avi","",0^);>"!NAMEFILE!.vcf"
   ECHO VirtualDub.RemoveInputStreams^(^);>>"!NAMEFILE!.vcf"
   rem PROCESS FIRST AUDIO
   if !Audio_#0! equ AC3 (
      rem PROCESS AC3
      if !Channels_#0! equ 6 (
         rem Process AC3 6 Channels
         ECHO -=-=-=-=-=-=-=-=-=-=-
         ECHO AC3_1 HAS 6 CHANNELS
         ECHO -=-=-=-=-=-=-=-=-=-=-
         "C:\VirtualDubMod\ffmpeg.exe" -i "!NAMEFILE!.avi" -vn -map 0:1 -acodec copy "r:\!NAMEFILE!.audio1.ac3"
         "c:\Meus Programas\AUDIO\BeSweet\BeSweet.exe" -core^( -input "r:\!NAMEFILE!.audio1.ac3" -output "r:\!NAMEFILE!.audio1.wav" -2ch ^) -azid^( -c light -L -3db ^) -ota^( -hybridgain ^)
         del "r:\!NAMEFILE!.audio1.ac3"
      ) else (
         rem Process AC3 2 or 1 Channels
         ECHO -=-=-=-=-=-=-=-=-=-=-
         ECHO AC3_1 HAS 2 CHANNELS
         ECHO -=-=-=-=-=-=-=-=-=-=-
         "C:\VirtualDubMod\ffmpeg.exe" -i "!NAMEFILE!.avi" -vn -map 0:1 -acodec copy "r:\!NAMEFILE!.audio1.ac3"
         "c:\Meus Programas\AUDIO\BeSweet\BeSweet.exe" -core^( -input "r:\!NAMEFILE!.audio1.ac3" -output "r:\!NAMEFILE!.audio1.wav" -2ch ^) -azid^( -c light ^) -ota^( -hybridgain ^)
         del "r:\!NAMEFILE!.audio1.ac3"
      )
      ECHO VirtualDub.stream[0].SetSource^("r:\\!NAMEFILE!.audio1.wav",0x00000201^);>>"!NAMEFILE!.vcf"
      ECHO VirtualDub.stream[0].DeleteComments^(1^);>>"!NAMEFILE!.vcf"
      ECHO VirtualDub.stream[0].AddComment^(0x00000003,"","Portuguese"^);>>"!NAMEFILE!.vcf"
      ECHO VirtualDub.stream[0].AdjustChapters^(1^);>>"!NAMEFILE!.vcf"
      ECHO VirtualDub.stream[0].SetMode^(1^);>>"!NAMEFILE!.vcf"
      ECHO VirtualDub.stream[0].SetInterleave^(1,500,1,0,0^);>>"!NAMEFILE!.vcf"
      ECHO VirtualDub.stream[0].SetClipMode^(1,1^);>>"!NAMEFILE!.vcf"
      ECHO VirtualDub.stream[0].SetConversion^(0,0,0,0,0^);>>"!NAMEFILE!.vcf"
      ECHO VirtualDub.stream[0].SetVolume^(^);>>"!NAMEFILE!.vcf"
      ECHO VirtualDub.stream[0].SetCompression^(85,48000,2,0,16000,1,12,"AQAEAAAAgAEBAAAA"^);>>"!NAMEFILE!.vcf"
      ECHO VirtualDub.stream[0].EnableFilterGraph^(0^);>>"!NAMEFILE!.vcf"
      ECHO VirtualDub.stream[0].filters.Clear^(^);>>"!NAMEFILE!.vcf"
   ) else (
      rem PROCESS MP3
      if !Mode_#0! equ Constant (
         rem JUST REMUX AUDIO
         ECHO VirtualDub.stream[0].SetSource^(0x73647561,0,0^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[0].DeleteComments^(1^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[0].AddComment^(0x00000003,"","Portuguese"^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[0].AdjustChapters^(1^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[0].SetMode^(0^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[0].SetInterleave^(1,500,1,0,0^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[0].SetClipMode^(1,1^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[0].SetConversion^(0,0,0,0,0^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[0].SetVolume^(^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[0].SetCompression^(^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[0].EnableFilterGraph^(0^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[0].filters.Clear^(^);>>"!NAMEFILE!.vcf"
      ) else (
         rem REDO AUDIO
         ECHO VirtualDub.stream[0].SetSource^(0x73647561,0,1^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[0].DeleteComments^(1^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[0].AddComment^(0x00000003,"","Portuguese"^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[0].AdjustChapters^(1^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[0].SetMode^(1^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[0].SetInterleave^(1,500,1,0,0^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[0].SetClipMode^(1,1^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[0].SetConversion^(0,0,0,0,0^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[0].SetVolume^(^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[0].SetCompression^(85,48000,2,0,16000,1,12,"AQAEAAAAgAEBAAAA"^);>>"!NAMEFILE!.vcf"
         if !Sample_#0! equ 44100 (
            rem REDO 44100 AUDIO
            ECHO VirtualDub.stream[0].EnableFilterGraph^(1^);>>"!NAMEFILE!.vcf"
            ECHO VirtualDub.stream[0].filters.Clear^(^);>>"!NAMEFILE!.vcf"
            ECHO VirtualDub.stream[0].filters.Add^("input"^);>>"!NAMEFILE!.vcf"
            ECHO VirtualDub.stream[0].filters.Add^("resample"^);>>"!NAMEFILE!.vcf"
            ECHO VirtualDub.stream[0].filters.Connect^(0, 0, 1, 0^);>>"!NAMEFILE!.vcf"
            ECHO VirtualDub.stream[0].filters.instance[1].SetInt^(0, 48000^);>>"!NAMEFILE!.vcf"
            ECHO VirtualDub.stream[0].filters.instance[1].SetInt^(1, 64^);>>"!NAMEFILE!.vcf"
            ECHO VirtualDub.stream[0].filters.Add^("output"^);>>"!NAMEFILE!.vcf"
            ECHO VirtualDub.stream[0].filters.Connect^(1, 0, 2, 0^);>>"!NAMEFILE!.vcf"
         ) else (
            rem REDO 48000 AUDIO
            ECHO VirtualDub.stream[0].EnableFilterGraph^(0^);>>"!NAMEFILE!.vcf"
            ECHO VirtualDub.stream[0].filters.Clear^(^);>>"!NAMEFILE!.vcf"
         )
      )
   )
   rem PROCESS SECOND AUDIO
   if !Audio_#1! equ AC3 (
      rem PROCESS AC3
      if !Channels_#1! equ 6 (
         rem Process AC3 6 Channels
         ECHO -=-=-=-=-=-=-=-=-=-=-
         ECHO AC3_2 HAS 6 CHANNELS
         ECHO -=-=-=-=-=-=-=-=-=-=-
         "C:\VirtualDubMod\ffmpeg.exe" -i "!NAMEFILE!.avi" -vn -map 0:1 -acodec copy "r:\!NAMEFILE!.audio2.ac3"
         "c:\Meus Programas\AUDIO\BeSweet\BeSweet.exe" -core^( -input "r:\!NAMEFILE!.audio2.ac3" -output "r:\!NAMEFILE!.audio2.wav" -2ch ^) -azid^( -c light -L -3db ^) -ota^( -hybridgain ^)
         del "r:\!NAMEFILE!.audio2.ac3"
      ) else (
         rem Process AC3 2 or 1 Channels
         ECHO -=-=-=-=-=-=-=-=-=-=-
         ECHO AC3_2 HAS 2 CHANNELS
         ECHO -=-=-=-=-=-=-=-=-=-=-
         "C:\VirtualDubMod\ffmpeg.exe" -i "!NAMEFILE!.avi" -vn -map 0:2 -acodec copy "r:\!NAMEFILE!.audio2.ac3"
         "c:\Meus Programas\AUDIO\BeSweet\BeSweet.exe" -core^( -input "r:\!NAMEFILE!.audio2.ac3" -output "r:\!NAMEFILE!.audio2.wav" -2ch ^) -azid^( -c light ^) -ota^( -hybridgain ^)
         del "r:\!NAMEFILE!.audio2.ac3"
      )
      ECHO VirtualDub.stream[1].SetSource^("r:\\!NAMEFILE!.audio2.wav",0x00000201^);>>"!NAMEFILE!.vcf"
      ECHO VirtualDub.stream[1].DeleteComments^(1^);>>"!NAMEFILE!.vcf"
      ECHO VirtualDub.stream[1].AddComment^(0x00000003,"","English"^);>>"!NAMEFILE!.vcf"
      ECHO VirtualDub.stream[1].AdjustChapters^(1^);>>"!NAMEFILE!.vcf"
      ECHO VirtualDub.stream[1].SetMode^(1^);>>"!NAMEFILE!.vcf"
      ECHO VirtualDub.stream[1].SetInterleave^(1,500,1,0,0^);>>"!NAMEFILE!.vcf"
      ECHO VirtualDub.stream[1].SetClipMode^(1,1^);>>"!NAMEFILE!.vcf"
      ECHO VirtualDub.stream[1].SetConversion^(0,0,0,0,0^);>>"!NAMEFILE!.vcf"
      ECHO VirtualDub.stream[1].SetVolume^(^);>>"!NAMEFILE!.vcf"
      ECHO VirtualDub.stream[1].SetCompression^(85,48000,2,0,16000,1,12,"AQAEAAAAgAEBAAAA"^);>>"!NAMEFILE!.vcf"
      ECHO VirtualDub.stream[1].EnableFilterGraph^(0^);>>"!NAMEFILE!.vcf"
      ECHO VirtualDub.stream[1].filters.Clear^(^);>>"!NAMEFILE!.vcf"
   ) else (
      rem PROCESS MP3
      if !Mode_#0! equ Constant (
         rem JUST REMUX AUDIO
         ECHO VirtualDub.stream[1].SetSource^(0x73647561,1,0^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[1].DeleteComments^(1^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[1].AddComment^(0x00000003,"","English"^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[1].AdjustChapters^(1^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[1].SetMode^(0^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[1].SetInterleave^(1,500,1,0,0^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[1].SetClipMode^(1,1^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[1].SetConversion^(0,0,0,0,0^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[1].SetVolume^(^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[1].SetCompression^(^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[1].EnableFilterGraph^(0^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[1].filters.Clear^(^);>>"!NAMEFILE!.vcf"
      ) else (
         rem REDO AUDIO
         ECHO VirtualDub.stream[1].SetSource^(0x73647561,1,1^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[1].DeleteComments^(1^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[1].AddComment^(0x00000003,"","English"^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[1].AdjustChapters^(1^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[1].SetMode^(1^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[1].SetInterleave^(1,500,1,0,0^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[1].SetClipMode^(1,1^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[1].SetConversion^(0,0,0,0,0^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[1].SetVolume^(^);>>"!NAMEFILE!.vcf"
         ECHO VirtualDub.stream[1].SetCompression^(85,48000,2,0,16000,1,12,"AQAEAAAAgAEBAAAA"^);>>"!NAMEFILE!.vcf"
         if !Sample_#0! equ 44100 (
            rem REDO 44100 AUDIO
            ECHO VirtualDub.stream[1].EnableFilterGraph^(1^);>>"!NAMEFILE!.vcf"
            ECHO VirtualDub.stream[1].filters.Clear^(^);>>"!NAMEFILE!.vcf"
            ECHO VirtualDub.stream[1].filters.Add^("input"^);>>"!NAMEFILE!.vcf"
            ECHO VirtualDub.stream[1].filters.Add^("resample"^);>>"!NAMEFILE!.vcf"
            ECHO VirtualDub.stream[1].filters.Connect^(0, 0, 1, 0^);>>"!NAMEFILE!.vcf"
            ECHO VirtualDub.stream[1].filters.instance[1].SetInt^(0, 48000^);>>"!NAMEFILE!.vcf"
            ECHO VirtualDub.stream[1].filters.instance[1].SetInt^(1, 64^);>>"!NAMEFILE!.vcf"
            ECHO VirtualDub.stream[1].filters.Add^("output"^);>>"!NAMEFILE!.vcf"
            ECHO VirtualDub.stream[1].filters.Connect^(1, 0, 2, 0^);>>"!NAMEFILE!.vcf"
         ) else (
            rem REDO 48000 AUDIO
            ECHO VirtualDub.stream[1].EnableFilterGraph^(0^);>>"!NAMEFILE!.vcf"
            ECHO VirtualDub.stream[1].filters.Clear^(^);>>"!NAMEFILE!.vcf"
         )
      )
   )
   ECHO VirtualDub.video.DeleteComments^(1^);>>"!NAMEFILE!.vcf"
   ECHO VirtualDub.video.AddComment^(0x00000002,"ISFT","VirtualDubMod 1.5.10.2 (build 2542/release)"^);>>"!NAMEFILE!.vcf"
   ECHO VirtualDub.video.AdjustChapters^(1^);>>"!NAMEFILE!.vcf"
   ECHO VirtualDub.video.SetDepth^(24,24^);>>"!NAMEFILE!.vcf"
   ECHO VirtualDub.video.SetMode^(0^);>>"!NAMEFILE!.vcf"
   ECHO VirtualDub.video.SetFrameRate^(0,1^);>>"!NAMEFILE!.vcf"
   ECHO VirtualDub.video.SetIVTC^(0,0,-1,0^);>>"!NAMEFILE!.vcf"
   ECHO VirtualDub.video.SetCompression^(^);>>"!NAMEFILE!.vcf"
   ECHO VirtualDub.video.filters.Clear^(^);>>"!NAMEFILE!.vcf"
   ECHO VirtualDub.SaveAVI^("s:\\!NAMEFILE!.avi"^);>>"!NAMEFILE!.vcf"
   ECHO VirtualDub.Close^(^);>>"!NAMEFILE!.vcf"
   "C:\VirtualDubMod\VirtualDubMod.exe" /r /s"R:\!NAMEFILE!.vcf" /x
   rem del "!NAMEFILE!.vcf"
   del "!NAMEFILE!.cod"
   rem del "!NAMEFILE!.audio1.wav"
   rem del "!NAMEFILE!.audio2.wav"
)
rem go back to original folder and delete the virtual drives.
%ORIGINALDRIVE%
subst r: /d
subst s: /d
于 2012-11-02T21:09:22.253 に答える