VLC 以较高的采样率进行流式传输,但转码并保存为较低的

VLC 以较高的采样率进行流式传输,但转码并保存为较低的

我正在尝试对来自广播电台的 mpeg4audio 流进行转码并保存文件。我有一个无头服务器,我正尝试使用它cvlc来对流进行转码并将其保存到文件中。这是我使用的命令行命令:

/usr/bin/cvlc --sout "#transcode{vcodec=none,acodec=mp3,ab=128,channels=2,samplerate=44100,scodec=none}:std{access=file,mux=mp3,dst=test/test-1-${DATE}.mp3}" https://evanov.leanstream.co/CIDCFM?args=web_01

运行该命令时我得到以下输出:

VLC media player 3.0.9.2 Vetinari (revision 3.0.9.2-0-gd4c1aefe4d)
[000055baea0d4c30] main interface error: no suitable interface module
[000055bae9ff6290] main libvlc error: interface "globalhotkeys,none" initialization failed
[000055baea0d4c30] dummy interface: using the dummy interface module...
[00007fea54003740] dummy mux: Open
[00007fea543453e0] mpeg4audio demux packetizer: AAC channels: 1 samplerate: 22050

但是,当我在 Windows PC 上使用 GUI VLC 并进行纯粹的流式传输(无转码/保存)时,我看到 2 个 AAC 通道和 44100 的采样率。

vlc 流码信息

在转码后的音频中,我可以确认采样率为 22050,并且还存在一些奇怪的音频问题。当我在 VLC GUI 中流式传输时,不存在这种较低的采样率和音频声音问题。奇怪的是,当我使用 VLC GUI 向导将流转换为文件时,尽管参数指定了 44100 个样本,但它也会导致相同的较低采样率。

我的命令在这里有错误吗?我也愿意使用不同的命令行程序来完成同样的任务。我只是想以与原始流类似的音质以 mp3 格式保存此流。

如果相关的话,无头服务器正在运行 Ubuntu 20.04。

编辑:

如果我直接在 Windows 上的 VLC 中点击“录制”,流听起来很正常。它保存为 mp4 文件,音频编解码器为 mp4a(MPEG AAC 音频)。44100 Hz,32 位/样本,AAC 扩展名 SBR。而使用我的命令录制会生成一个具有特定比特率的文件,没有 AAC SBR 扩展名。

请参见下面的图片,左侧显示了未进行转码的原始流录制,右侧显示了使用上述cvlc命令录制的音频选项。您可以看到差异。我假设该问题与 SBR 有关。

两个音频文件之间的差异,左边是正确文件,右边是损坏文件

此命令将生成听起来正确的 OGG 文件。所以最坏的情况是我只能转换流后录制的文件,而不是实时转码。

cvlc --sout "#standard{access=file,mux=ogg,dst=test2.ogg" https://evanov.leanstream.co/CIDCFM

答案1

将转码音频流的目标比特率(默认值为 96)提高到 256,似乎已将采样率提高到正确的水平。

使用的参数是ab=256

仍然存在音频断断续续/卡顿的效果,这可能需要尝试更多组合和值ab以及其他参数。

答案2

我最终通过将其记录为ogg文件然后将其转换为来解决这个问题mp3

cvlc录制流使用的命令:

cvlc --sout "#standard{access=file,mux=ogg,dst=Streams/1035-${DATE}.ogg" https://evanov.leanstream.co/CIDCFM

ffmpeg批量转换任何 .ogg 文件的命令:

ffmpeg -i "$i" "${i%.*}.mp3" -vn -n -ar 44100 -ac 2 -q:a 2
  • -i- 输入文件
  • -vn- 禁用视频(以防万一)
  • -ar 44100- 音频采样频率设置为44100
  • -ac 2- 音频通道设置为 2
  • -q:a 2- 允许编码器从 170 到 210 KB/s 的质量范围中选择(平均 192 KB/s)

我引用了一个Stackoverflow 上针对此 ffmpeg 命令的回答

总体而言,录制更“原始”的格式并mp3在之后转换为似乎比尝试使用 VLC 将实时流转码为更可靠的选择mp3

相关内容