VLC如何在普通PC上播放24位PCM音频?

Posted

技术标签:

【中文标题】VLC如何在普通PC上播放24位PCM音频?【英文标题】:How can VLC play 24-bit PCM audio on general PC? 【发布时间】:2020-07-06 04:31:52 【问题描述】:

我尝试使用Vlcsharp 和NAudio 播放24 位PCM 音频(s24le)。

我通过调用libvlc_audio_set_callbacks()设置音频播放回调,首先获取原始样本数据。

接下来,我尝试了两个示例视频。一个有 24 位 PCM 音频,另一个有 16 位音频(使用 ffmpeg CLI 从 24 位转换),除此之外,一切都相同。 玩的不错,但是我用调试器看数据的时候,vlc's audio play callback得到的样例数据是一样的。

经过一番研究,我发现如果没有合适的声卡,一般 PC 无法播放 24 位 PCM 音频。

如果正确,是否有一些位深度转换(24->16)的过程可以播放?那么,回调得到的样本数据是一样的吗?

【问题讨论】:

我可能已经有十年没有见过不支持 24 位的基本 PC 声卡了。但是,它并不总是启用。我不熟悉您使用的 API,但听起来它也将依赖于 VLC 输出插件和操作系统。 这适用于 VLC 吗?这听起来更像是 NAudio 的问题,而不是 VLC。 【参考方案1】:

如果你想强制 vlc 转换格式,你可以在这里设置格式参数: https://code.videolan.org/mfkl/libvlcsharp-samples/-/blob/master/AudioCallbacks/Program.cs#L59

int Audiosetup(ref IntPtr opaque, ref IntPtr format, ref uint rate, ref uint channels)

参见文档here 格式应该是 4 个 ascii 字符的字符串,但我不知道您可以在此处传递的可用格式。

【讨论】:

以上是关于VLC如何在普通PC上播放24位PCM音频?的主要内容,如果未能解决你的问题,请参考以下文章

使用 gstreamer 将 PCM 数据发送到 VLC 播放器

如何将 PCM 音频流转换为在线播放

PCM音频实时播放:音频字节数组(16/8位)转为PCM ArrayBuffer流

手机上的vlc怎么使用

使用 snd_pcm_writei() 播放音频时如何正确处理 ALSA 编程中的 xrun?

在 LInux 上播放 PCM 音频(wav)[关闭]