web-dev-qa-db-ja.com

audacity-複数の.aupを.mp3に変換します

Mp3に変換したい約130の.aupファイル(すべてのビニールの録音)がたくさんあります。各.aupはビニールの全面です(トラックを分割したくありません-1つのmp3として全体が問題ありません)。私の問題は、これらすべてのaupsを一度にmp3にバッチ変換する方法です。各.aupを一度に1つずつ開き、[チェーンの適用]ダイアログで開くのは非常に面倒です。130個のファイルに対して[現在のプロジェクトに適用]を1つずつ選択します。

誰かがコードを変更したり、そうでなければ解決策を考え出すことができましたか?

私はそれを(BatchProcessDialog.cpp)の以下のメソッドまでた​​どりました

void BatchProcessDialog::OnApplyToProject(wxCommandEvent &event)
{
   long item = mChains->GetNextItem(-1,
                                    wxLIST_NEXT_ALL,
                                    wxLIST_STATE_SELECTED);
   if (item == -1) {
      wxMessageBox(_("No chain selected"));
      return;
   }
   wxString name = mChains->GetItemText(item);

   wxDialog d(this, wxID_ANY, GetTitle());
   ShuttleGui S(&d, eIsCreating);

   S.StartHorizontalLay(wxCENTER, false);
   {
      S.StartStatic(wxT(""), false);   // deliberately not translated (!)
      {
         S.SetBorder(20);
         S.AddFixedText(wxString::Format(_("Applying '%s' to current project"),
                                         name.c_str()));
      }
      S.EndStatic();
   }
   S.EndHorizontalLay();

   d.Layout();
   d.Fit();
   d.CenterOnScreen();
   d.Move(-1, 0);
   d.Show();
   Hide();

   wxWindowDisabler wd;

   gPrefs->Write(wxT("/Batch/ActiveChain"), name);

   mBatchCommands.ReadChain(name);
   if (!mBatchCommands.ApplyChain()) {
      return;
   }
}
3
toop

私は自分のスクリプトをautohotkeyでロールすることにしました(少し不安定ですが、一度にいくつかのファイルを処理できます):

SetTitleMatchMode 2
#p::Pause

#x::Exit

#a::
direc = C:\Documents and Settings\Test\My Documents\myaups\
FileList =  ; Initialize to be blank.
Loop, %direc%*.aup
    FileList = %FileList%%A_LoopFileName%`n
Loop, parse, FileList, `n
{
    Sleep 2500
    Run, "C:\Program Files\Audacity 1.3 Beta (Unicode)\audacity.exe"
    Sleep 2500
    WinWait, Audacity, 
    IfWinNotActive, Audacity, , WinActivate, Audacity, 
    WinWaitActive, Audacity,
    if A_LoopField =  ; Ignore the blank item at the end of the list.
        continue
    Sleep 2500
    Send, {CTRLDOWN}o{CTRLUP}
    Sleep 3000
    WinWait, Select one or more audio files..., 
    IfWinNotActive, Select one or more audio files..., , WinActivate, Select one or more audio files..., 
    WinWaitActive, Select one or more audio files..., 
    Sleep, 2800
    Send, %direc%
    Sleep, 2600
    Send, {Enter}
    Sleep, 2600
    Send, %A_LoopField% ;filename from direc loop
    Sleep, 2600
    Send, {Enter}
    Sleep, 4000
    IfWinActive, Warning - Opening Old Project File
    {
    Send, {Enter}
    Sleep, 1000
    }
    Sleep, 3800
    IfWinActive, Warning - Orphan Block File(s)
    {
    Send {Tab}
    Sleep 1000
    Send {Tab}
    Sleep 1000
    Send, {Enter}
    }
    Sleep, 3000
    Send, {SHIFTDOWN}c{SHIFTUP} ;first must set the keyboard shortcut in audacity to Shift+C
    Sleep, 3600
    WinWait, Apply Chain, 
    IfWinNotActive, Apply Chain, , WinActivate, Apply Chain, 
    WinWaitActive, Apply Chain, 
    Sleep 500
    Send, {TAB}{ENTER}
    Sleep 4000
    Loop ;wait till conversion finishes
    {
        if !WinExist("Apply Chain")
            break  ; Terminate the loop
        else
            Sleep 200
    }
    Sleep 3800
    Send, {CTRLDOWN}q{CTRLUP} ;exit audacity
    Sleep, 3800
    WinWait, Save changes?, 
    IfWinNotActive, Save changes?, , WinActivate, Save changes?, 
    WinWaitActive, Save changes?, 
    Sleep 500
    Send, {TAB}{ENTER}
    Sleep 6500
}
Return
2
toop

mChainsオブジェクトがインスタンス化されるクラス構造について知って、それをチェーンするための適切な関数を呼び出す必要があるため、C++の知識がない場合は多少注意が必要です。

別の方法として、GUIクリックをエミュレートする AutoIt を使用してスクリプトを作成することもできます。

1
Tamara Wijsman

Audacity(少なくとも最近のバージョン)はからの対話にあります File >> Apply Chain... ボタン Apply to Files... これにより、チェーンを一度に複数のファイルに適用できます。

0
Alex1357