DpdoPlayerEngine — DSD 音频播放器

命令行版文件名是 DpdoPlayerEngine;图形界面版文件名是 DpdoPlayer。

概述

DpdoPlayerEngine 是为 DSD 回放优化的命令行音频播放器,支持原生 DSD 直出和 DoP(DSD over PCM)两种传输模式,兼容各类 USB DAC 和 DSD 解码器。

规格速览

规格参数
音频格式DSD(DSF / DFF / DST / WSD)· SACD ISO · DTS / DTS-WAV · PCM(WAV / AIFF / FLAC)· ALAC / TTA / WavPack / APE · CUE
传输模式原生 DSD 直出 / DoP(DSD over PCM)/ DSD→PCM 解码播放
输出模式standard / differential / BTL
通道布局立体声 / 多声道直通 / 自定义映射
流模式低延迟(-stream)
平台Windows / Linux / macOS
当前版本6.75.0

基本用法

DpdoPlayerEngine <audio_file> [options]
	

支持的音频格式: - DSD:DSF(.dsf)/ DFF(.dff)/ DST 压缩 DSF/DFF(自动解压播放)/ WSD(.wsd,Korg 格式,自 6.70.0 起)/ SACD ISO(.iso,含 DST 解压) - DTS:.dts / DTS-WAV(核心 2.0–5.1) - PCM:WAV / AIFF / AIFC / FLAC - 无损压缩格式:ALAC(.m4a / .mp4)/ TTA(.tta)/ WavPack(.wv)/ APE(.ape) - 播放表:CUE(分轨无缝) - 暂不支持:MP3 / AAC / OGG

最简单的播放:

# 播放单个 DSF 文件
	DpdoPlayerEngine track.dsf
	
	# 播放 DFF 文件
	DpdoPlayerEngine track.dff
	

设备配置

-dev 参数设置音频输出设备:

# 列出可用设备
	DpdoPlayerEngine track.dsf -dev list
	
	# 选择指定设备(通过设备 ID)
	DpdoPlayerEngine track.dsf -dev 1
	
	# 选择指定设备(通过设备名称)
	DpdoPlayerEngine track.dsf -dev "USB Audio DAC"
	

设备列表输出示例:

Available audio devices:
	  0: Default Output
	  1: USB Audio DAC (ALSA)
	  2: HDMI Audio Output
	

通道布局

-layout 参数配置输出通道映射:

# 强制立体声输出(左右声道)
	DpdoPlayerEngine track.dsf -layout stereo
	
	# 强制多声道直出
	DpdoPlayerEngine track.dsf -layout multichannel
	
	# 自定义映射(左声道映射到输出 1,右声道映射到输出 2)
	DpdoPlayerEngine track.dsf -layout "1,2"
	

布局选项

值说明
stereo标准立体声
multichannel多声道直通
reverse左右声道互换
mono单声道混合
custom自定义通道映射(逗号分隔通道索引)

播放模式

-mode 设置输出模式:

# 标准模式
	DpdoPlayerEngine track.dsf -mode standard
	
	# 差分输出(Differential)
	DpdoPlayerEngine track.dsf -mode differential
	
	# BTL 桥接模式(Bridge-Tied Load)
	DpdoPlayerEngine track.dsf -mode btl
	

模式说明

模式说明适用场景
standard标准单端输出通用兼容模式
differential差分信号输出,每声道正反相两路输出平衡 DAC
btlBTL 桥接负载,正端和负端反相驱动高功率输出

DoP 模式(DSD over PCM)

-dop 控制 DSD over PCM 行为:

# 自动选择 DoP 或原生 DSD
	DpdoPlayerEngine track.dsf -dop auto
	
	# 强制 DoP 模式
	DpdoPlayerEngine track.dsf -dop force
	
	# 强制原生 DSD 模式
	DpdoPlayerEngine track.dsf -dop native
	

能否真的走 DoP 由设备侧证据判定:端点「能开 176400 独占」不等于「能解 DoP」—— 板载声卡电路上就没有 DSD 通路,被喂 DoP 只会把 DoP 标记当普通 PCM 放出来(听到的是丝丝声)。判为不支持的端点,-dop force 会被拒绝并自动改用 DSD→PCM 解码播放;图形界面(DpdoPlayer)的设备下拉会直接显示判定(⟨DoP 2x⟩ / ⟨DoP 1x⟩ / ⟨DoP 未确认⟩ / ⟨仅 PCM⟩),判定不确定的设备可点「标记为 DSD 解码器」一键标记。

DoP 选项

值说明
auto自动检测设备能力,选择最优传输方式
force强制使用 DoP 封装(将 DSD 嵌入 24-bit PCM 帧传输)
native强制使用原生 DSD 传输(需设备支持)

提示: 大多数现代 USB DAC 支持原生 DSD 传输,建议先尝试 native。若出现噪音或无声,切换到 force 模式。


音量控制

-vol 设置播放音量(百分比):

# 设置音量为 80%
	DpdoPlayerEngine track.dsf -vol 80
	
	# 最大音量
	DpdoPlayerEngine track.dsf -vol 100
	
	# 低音量监听
	DpdoPlayerEngine track.dsf -vol 30
	

音量范围:0–100,默认值取决于设备初始设置。

音量直接改设备侧的硬件音量(Linux = ALSA 硬件 mixer,Windows = 端点音量),宿主不做数字衰减 —— 1-bit DSD 过一遍软件乘法就是有损的。 不指定 -vol 时设备音量原样不动;-vol 100 是把设备音量拉到最大。


DSD → PCM 解码播放

-pcm 模式让没有 DSD 硬解能力的 DAC 也能播放 DSD 文件:播放时通过 Pdm2Pcm 实时解码为 PCM 输出。

# 自动采样率解码播放(DSD/64 或 DSD/32)
	DpdoPlayerEngine track.dsf -pcm
	
	# 指定解码采样率
	DpdoPlayerEngine track.dsf -pcm 352800
	
	# 16-bit 输出
	DpdoPlayerEngine track.dsf -pcm -pcm-bits 16
	
  • -pcm [rate] — 启用 DSD→PCM 解码播放,rate 0(省略)= 自动(DSD/64 或 DSD/32)
  • -pcm-bits <16|24|32> — 输出位深,默认 24-bit,内置噪声整形把量化噪声推到高频,显著改善听感

提示:24-bit 输出配合噪声整形是音质与兼容性的最佳平衡点;16-bit 适合老式设备,32-bit 适合后续处理链。


流模式

-stream 启用流模式,优化低延迟播放场景:

# 流模式播放
	DpdoPlayerEngine track.dsf -stream
	

流模式特点

  • 更低延迟 — 减少音频缓冲区大小
  • 实时播放 — 适用于配合管道输入的实时监听场景
  • 自动适配 — 根据系统性能动态调整缓冲区

配合 DpdoEngine 管道实现实时转换播放

# 实时转换 PCM → DSD 并通过 DpdoPlayerEngine 播放
	DpdoEngine -i input.flac output.dsf -osr 64 -pipe | DpdoPlayerEngine - -vol 80
	
	# 实际场景:实时监听录音
	DpdoEngine -record -format dsf recording.dsf -pipe | DpdoPlayerEngine - -stream
	

其中 - 表示从标准输入读取音频数据。


完整播放示例

# 高规格播放配置
	DpdoPlayerEngine sacd_track.dsf \
	  -dev "USB DAC" \
	  -layout stereo \
	  -mode differential \
	  -dop native \
	  -vol 85
	
	# 多声道原生 DSD 播放
	DpdoPlayerEngine multichannel.dsf \
	  -dev 1 \
	  -layout multichannel \
	  -mode standard \
	  -dop native
	
	# 低延迟流模式播放
	DpdoPlayerEngine live_recording.dsf \
	  -stream \
	  -dev 0 \
	  -vol 70
	

故障排除

无声音输出

  1. 确认 DAC 已正确连接并被系统识别
  2. 使用 -dev list 列出可用设备,确认选择了正确的设备
  3. 尝试切换 DoP 模式:-dop auto → -dop force(端点没有 DSD 通路时,force 会被自动改为 DSD→PCM 解码)
  4. 检查音量设置:-vol 100

播放有噪音/爆音

  1. 如果使用原生 DSD 出现噪音,尝试 DoP 模式:-dop force;但板载声卡等没有 DSD 通路的端点不要用 DoP(只会听到丝丝声)—— 播放器会自动拦下并改走 DSD→PCM
  2. 检查 USB 线质量和连接稳定性
  3. 尝试降低 DSD 规格(如从 DSD256 降为 DSD128 的源文件)

设备未列出

  1. 确认操作系统已安装 DAC 驱动程序
  2. 对于 Linux 系统,确保 ALSA 配置正确
  3. 检查 USB 连接

图形界面(GUI)版本

DpdoPlayer 图形界面

上图:播放器图形界面(DpdoPlayer)—— 选文件、挑输出设备、看播放进度。打包器与音频工具各有自己的图形界面,见各自产品页。

为什么选 DpdoPlayer

同样是放 DSD,DpdoPlayer 在下面这几件事上做得更具体(都是可验证的实现,不是宣传语):

  • DSD 原生直出,也有兜底:native / DoP 直出优先;没有 DSD 硬解的 DAC 用 PDM2PCM 实时解码照样能放,配了需要混音的方案会自动改用解码播放并在日志里写明。
  • 多台 DAC 也能用:一台 DAC 管一个声道(差分 / 平衡、BTL 桥接)或一台多路 DAC;设备↔声道映射可配——外面怎么接线,里面就怎么配。
  • 声道方案可配,且不静默:混合矩阵 + 混合音量(预设 direct / bs775 / all-channel-stereo,或自定义 *.json;图形界面与命令行同一份方案)。方案不合法(未知声道名、系数越界、映射长度与设备不符)直接拒绝播放,不会悄悄换成别的口径。
  • 播放前先知道会不会削顶:实测扫描用当前方案把整段素材真跑一遍,报每路峰值、是否削顶、以及要落回 0 dBFS 该设的混合音量;另有一个纯矩阵的最坏增益检查(秒出)。
  • 位完美路由:分路(每声道各走各的)逐字节不动、没有默认限幅 / AGC / 响度归一化;只有合并才动电平,且系数是静态可复现的。
  • 格式覆盖面:DSD(DSF / DFF / WSD / DSD-raw)、SACD ISO(含 DST 解压)、DTS / DTS-WAV、PCM(WAV / AIFF / FLAC)、CUE 播放表(轨间无缝)。
  • 音量走设备端点,不动样本数据(1-bit DSD 过一遍软件乘法就是有损);Windows 走 ASIO / WASAPI 独占,Linux 走 ALSA,两端同一个引擎。