这么一个看似简单的功能,实现起来却颇费周折。
据ai说,Audacity 3.3版本只需要简单设置一下就可以了。但后来的版本莫名其妙去掉了这个功能。
ai给了大量的错误信息。首先用Nyquist写插件,没用,它只能生成一个音频,不能播放音频,也就是不能发声。
试了宏,Export2的参数只允许设置文件名,而且不能置空,没用。
最后在ai帮助下,使用mod-script-pipe模块,结合powershell代码,终于成功。具体方法:
1. 激活mod-script-pipe模块(缺省不激活):菜单Edit - Preferences - Modules,找到mod-script-pipe,设置为Enabled。重启Audacity。
2. 编写powershell代码
param ([string]$filePath ) $pipeIn = "\\.\pipe\ToSrvPipe" $pipeOut = "\\.\pipe\FromSrvPipe"function Send-AudacityCommand {param([string]$command)# Send command$pipe = New-Object System.IO.Pipes.NamedPipeClientStream(".", "ToSrvPipe", [System.IO.Pipes.PipeDirection]::Out)$pipe.Connect()$writer = New-Object System.IO.StreamWriter($pipe)$writer.AutoFlush = $true$writer.WriteLine($command)$pipe.Close()# Read response$pipeR = New-Object System.IO.Pipes.NamedPipeClientStream(".", "FromSrvPipe", [System.IO.Pipes.PipeDirection]::In)$pipeR.Connect()$reader = New-Object System.IO.StreamReader($pipeR)$response = $reader.ReadToEnd()$pipeR.Close()return $response }$folder = Split-Path $filePath -Parent$baseName = Split-Path $filePath -LeafBase $exportPath = Join-Path $folder "$baseName.m4a"Send-AudacityCommand "Export2: Filename=""$exportPath"" Format=m4a"
[console]::beep(800,2000)
3. 添加注册表项以生成右键菜单
Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\*\shell\Export Audio as M4a][HKEY_CLASSES_ROOT\*\shell\Export Audio as M4a\Command] @="powershell.exe -NoProfile -ExecutionPolicy Bypass -File \"C:\\foo\\bar.ps1\" -filePath \"%1\""
这样,先用Audacity导入视频,然后在文件管理器中右键点击文件名,选Export Audio as M4a,就可以了。
本来也可以通过powershell,调用audacity的Import命令,直接导入。但是很多视频导入后,需要手工调整音频设置,所以这一步就不自动化了。