GStreamer 和采样率转换

GStreamer 和采样率转换

我的声卡在 Alsa 中仅部分受支持,即播放仅在 48 kHz 下工作。我的大多数音频文件都是 44.1 kHz,我想使用 Exaile 作为我的音频播放器,因为它具有我需要的所有功能。

问题是,gstreamer - exaile 的后端 - 不会使用我当前的设置转换采样率,因此播放音频文件将导致加速,而使用 mplayer 播放文件效果很好,mplayer 确实采样率播放时转换。

有没有办法让gstreamer转换采样率?

编辑:有问题的声卡是 E-MU 0404 PCI Express,请参阅http://alsa-project.org/main/index.php/Matrix:Vendor-Creative_Labshttp://alsa-project.org/main/index.php/Matrix:Module-emu10k1-fpga

答案1

我最近购买了一个 E-MU 0404 USB,所以也许我的经验可以帮助您。

经过一番努力,它似乎能够播放 44100Hz 和 48000Hz(而且,可能 - 但我没有检查过 - 高达 192kHz 的各种频率......)

GStreamer 能够进行采样率转换,但它可能不是配置此功能的正确位置。正如您无疑已经注意到的那样,如何配置它是非常混乱的,并且可能涉及 gconf。但是,还有许多其他位置应该可以使用。我已按偏好降序排列了它们。

这些设备的技巧似乎是在混音器中设置“时钟速率”滑块(基于终端的 alsamixer 应该只显示它​​,我认为其他设备要求您取消隐藏滑块)。将其设置为 0 给出 44100Hz,设置为 1 给出 48000Hz,依此类推。令人恼火 - 但可行。

笔记;如果您想使用 SPDIF 输出,则需要将媒体播放器配置为从设备 1 输出。如果有人试图获得直通 (AC3/DTS),则这将不起作用,除非您的采样率设置正确(通常, 48000kHz 又名“1”设置)。

此时它应该可以工作了,下面讨论如何在不摆弄该滑块的情况下执行操作:

如果您确实想要进行采样率转换,您应该能够通过创建适当的 ~/.asoundrc 来获得所需的效果(这假设 E-MU 是第二个声音设备 - 您可以使用 aplay -l 检查)。以下未经测试,因为我没有方便的模拟电缆:

pcm.!default {
         card 1
         device 0
         rate 48000
}

ctl.!default {
         type hw           
         card 1
}

通过 ALSA 配置应该可以让一切正常工作,但是,如果您希望通过 PulseAudio 进行配置,请编辑 /etc/pulse/daemon.conf 并确保 default-sample-rate 行读取(确保它没有被“;”注释掉,并且数字正确):

default-sample-rate = 48000

(从https://wiki.archlinux.org/index.php/PulseAudio#Choppy.2C_overdriven_sound

相关内容