我发现命令行文档有点让人不知所措,因为我对编解码器等几乎一无所知......
因此,以下正是我在 VLC (1.1.11) 中所做的,如果知道精确的命令行等效项其中:
- 在媒体 -> 转换/保存
- 添加文件并点击转换/保存
- 添加目标文件的名称
- 在设置 -> 个人资料
- 选择“音频 - MP3”
- 点击开始
答案1
简短回答
vlc -I dummy input.wav ":sout=#transcode{acodec=mpga,ab=192}:std{dst=output.mp3,access=file}" vlc://quit
这将转码input.wav
并将结果保存在output.mp3
。
ab=192
是输出文件的音频比特率。
长答案
如果您想找出从 GUI 启动的 VLC 转换的相应命令行,您可以这样做:
- 从终端/控制台启动 vlc,如下所示
vlc -vv
- 像往常一样在 VLC GUI 中开始转换。
- 向后滚动控制台历史记录,找到以以下内容开头的行
qt4 interface debug: Transcode MRL:
- 该行的其余部分包含相应的 vlc 命令行参数。
注意:我的 VLC 版本是2.1.0-git Rincewind
,我在 Linux 上...
答案2
我尝试在 Windows 中遵循其他答案,但是无法在命令行上正确进行日志记录,因此我做了以下操作:
方法 1
我能够使用 VLC 的内部日志窗口来查看它:
打开 VLC,转到“工具”->“消息”
将详细程度设置为 2(调试)
然后进行转换,所有内容都会记录在消息窗口中。搜索“ sout=#transcode
”或“ qt4 debug
”以找到包含转换设置的行。
方法 2
您可以直接查看配置文件,而不必查看日志。如果您想使用自定义设置,只需创建一个包含所需设置的新配置文件即可。
配置文件(自定义和内置)存储在 ini 文件中,位于
%AppData%\vlc\vlc-qt-interface.ini
对我来说这是
C:\Users\chiliNUT\AppData\Roaming\vlc\vlc-qt-interface.ini
配置文件位于名为
[codecs-profiles]
我的文件中的一个例子是:
[codecs-profiles]
1\Profile-Name=Video - VP80 + Vorbis (Webm)
1\Profile-Value="video_enable=yes;video_codec=VP80;vcodec_bitrate=2000;vcodec_framerate=0;vcodec_width=0;vcodec_height=0;audio_enable=yes;audio_codec=vorb;acodec_bitrate=128;acodec_channels=2;acodec_samplerate=44100;muxer_mux=webm"
2\Profile-Name=Video - H.264 + MP3 (TS)
2\Profile-Value="audio_enable=yes;audio_codec=mpga;acodec_bitrate=128;acodec_channels=2;acodec_samplerate=44100;video_enable=yes;video_codec=h264;vcodec_bitrate=800;vcodec_qp=0;vcodec_framerate=0;vcodec_width=0;vcodec_height=0;muxer_mux=ts"
...还有 22 个。我的自定义配置文件在底部。
使用 Windows 7 Ultimate SP1、VLC 2.1.3 Rincewind
答案3
虽然上述答案有助于我找到问题的答案,但它们并没有起作用,可能是因为它们在 Windows (10) 上不起作用,或者 VLC 已经更新为接受不同的开关。特别是,我将扩展joctee 的回答
vlc -I dummy input.wav ":sout=#transcode{acodec=mpga,ab=192}:std{dst=output.mp3,access=file}" vlc://quit
这里-I dummy
运行 vlc 而不显示 GUI,并vlc://quit
在转换完成后关闭 vlc。
在 Windows 10 上,运行时3.0.12
我需要运行以下命令(简化)。
vlc input --sout="[TRANSCODECOMMAND"]
其中 input 是输入文件名,output 是从调试器捕获的 sout。
完整示例,在我的例子中,将 MP3 转换为 WAVE 文件:
vlc _AI_NylStr_MonRibb_Sft-G2-0.mp3 --sout="#transcode{vcodec=none,acodec=s16l,ab=160,channels=2,samplerate=44100,scodec=none}:std{access=file,mux=wav,dst=_AI_NylStr_MonRibb_Sft-G2-0-44100k.wav}" vlc://quit
此外,要捕获“sout”命令,请在 VLC GUI 中转到“工具”->“消息”,然后将“详细程度”更改为 2,如所述辣椒坚果并在 GUI 中运行转换。
这在前三行给出了以下调试输出。
qt debug: MRL(s) passed to the Sout: 1
qt debug: MRL(s) passed to the Sout: file:///C:/Users/alexh/source/repos/WaveEditor/WaveEditor/bin/Debug/samples/_AI_NylStr_MonRibb_Sft-A2-0.mp3
qt debug: Transcode MRL: sout=#transcode{vcodec=none,acodec=s16l,ab=160,channels=2,samplerate=44100,scodec=none}:std{access=file{no-overwrite},mux=wav,dst='C:/Users/alexh/source/repos/WaveEditor/WaveEditor/bin/Debug/samples/_AI_NylStr_MonRibb_Sft-A2-0.wav'}
从该输出中复制所有内容到#transcode
行尾并将其作为参数传递给--sout[TranscodeParameter]
。
从上面的例子[TranscoderPameter]
#transcode{vcodec=none,acodec=s16l,ab=160,channels=2,samplerate=44100,scodec=none}:std{access=file{no-overwrite},mux=wav,dst='C:/Users/alexh/source/repos/WaveEditor/WaveEditor/bin/Debug/samples/_AI_NylStr_MonRibb_Sft-A2-0.wav'
因此完整的论点是:
--sout="#transcode{vcodec=none,acodec=s16l,ab=160,channels=2,samplerate=44100,scodec=none}:std{access=file,mux=wav,dst=_AI_NylStr_MonRibb_Sft-G2-0-44100k.wav}"
请注意,如果在不同的目录中工作,则可以使用相对路径名,并使用可执行文件的完整路径运行 vlc。
"C:\Program Files\VideoLAN\VLC\vlc.exe" _AI_NylStr_MonRibb_Sft-G2-0.mp3 --sout="#transcode{vcodec=none,acodec=s16l,ab=160,channels=2,samplerate=44100,scodec=none}:std{access=file,mux=wav,dst=_AI_NylStr_MonRibb_Sft-G2-0-44100k.wav}" vlc://quit