如何从命令行在 VLC 中进行以下转换?

如何从命令行在 VLC 中进行以下转换?

我发现命令行文档有点让人不知所措,因为我对编解码器等几乎一无所知......

因此,以下正是我在 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.mp3ab=192是输出文件的音频比特率。

长答案

如果您想找出从 GUI 启动的 VLC 转换的相应命令行,您可以这样做:

  1. 从终端/控制台启动 vlc,如下所示vlc -vv
  2. 像往常一样在 VLC GUI 中开始转换。
  3. 向后滚动控制台历史记录,找到以以下内容开头的行qt4 interface debug: Transcode MRL:
  4. 该行的其余部分包含相应的 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

相关内容