尝试为 .dsf(DSD 音频)文件创建一个简单的命令行播放器,并输出到支持高达 24 位 192 kHz 采样率的 alsa 设备。以下命令几乎可以正常工作,并且可以播放曲目。检查下面的粗体文本,dsf 输入文件被转换为 24 位/192 kHz,但输出随后被截断为 16 位 192 kHz(pcm_s16le,即 16 位小端)。
ffmpeg -i '01 - Sweet Georgia Brown.dsf' -f alsa hw:0,0
显示 ffmpeg 横幅和歌曲元数据(标签)后,结果如下,粗体是我的重点:
持续时间:00:05:14.83,开始:0.000000,比特率:9234 kb/s Stream #0:0:音频:flac,192000 Hz,立体声,s32(24 位)
流映射:Stream #0:0 -> #0 :0 (flac (native) -> pcm_s16le (native))
按 [q] 停止,[?] 寻求帮助
输出 #0,alsa,到 'hw:0,0':
由于我可以使用另一个播放器(foobar2000)以全分辨率播放此曲目和许多其他曲目,因此编码器中似乎可能有一个选项,它是 FFmpeg 的一部分:Lavf57.83.100 我在任何 FFmpeg 文档中都找不到有帮助的信息. 尝试在 FFplay 中查找选项,甚至使用其他 FFmpeg 选项进行猜测,例如此示例。
ffmpeg -sample_fmt s24 -i '01 - Sweet Georgia Brown.dsf' -f alsa hw:0,0 ***** 相同的结果。
我被困住了。有什么建议么?
环境:Linux Mint 19.2,64 位,华硕 Xonar STXii 声卡。