批量转换与录音
批量模式
DpdoEngine 支持通过脚本批量处理多个文件。虽然没有专门的 --batch 参数,但可以通过 shell 循环轻松实现批处理。
Shell 批量转换
Bash 示例 — 批量 FLAC → DSF:
#!/bin/bash
for f in *.flac; do
DpdoEngine -i "$f" "${f%.flac}.dsf" --oversampling 128 --order 7
done
递归处理子目录:
#!/bin/bash
find /music/pcm -name "*.flac" | while read f; do
outdir="/music/dsd${f#/music/pcm}"
mkdir -p "$(dirname "$outdir")"
DpdoEngine -i "$f" "${outdir%.flac}.dsf" --oversampling 128 --order 7
done
多核并行转换
利用 xargs 或 GNU parallel 充分发挥多核 CPU 性能:
# 使用 xargs — 每批 4 个并行任务
find . -name "*.flac" -print0 | xargs -0 -n1 -P4 -I{} sh -c \
'f="{}"; DpdoEngine -i "$f" "${f%.flac}.dsf" --oversampling 128 --order 7 -opencl'
# 使用 GNU parallel(推荐)
find . -name "*.flac" | parallel DpdoEngine -i {} {.}.dsf --oversampling 128 --order 7
提示: 配合
--opencl参数,GPU 加速在多任务场景下尤为高效。
管道模式(Pipe Mode)
--pipe 参数启用管道输入/输出模式,允许 DpdoEngine 与其他命令行工具配合使用,构建灵活的处理流水线。
基本用法
# 从 stdin 读取 PCM,输出到 stdout
cat input.wav | DpdoEngine -i pipe output.dsf --oversampling 64 --pipe
# 配合 ffmpeg 构建处理链
ffmpeg -i source.flac -f wav - | DpdoEngine -i pipe output.dsf --oversampling 128 --pipe
管道链示例
多段处理链路:
# PCM 源 → 响度标准化 → 噪声整形 → DSD 输出
ffmpeg -i track.flac -f wav - | \
DpdoEngine -i pipe track.dsf --oversampling 128 --order 7 --lufs -16 --pipe
配合 DpdoPlayer 实时监听:
# 转换的同时通过 DpdoPlayer 监听
DpdoEngine -i input.flac output.dsf --oversampling 64 --pipe | DpdoPlayer - -vol 80
录音模式(Record Mode)
DpdoEngine 支持直接从兼容的音频接口录制音频。录音模式的设计目标是实现从录音到 DSD 格式的无损直录。
基本录音
# 开始录音,输出 DSF 文件
DpdoEngine --record recording.dsf
录音参数选项
| 参数 | 说明 | 示例 |
|---|---|---|
--record | 启用录音模式(默认单声道,按 q 停止) | --record |
--record-device NAME | 录音设备名(默认系统默认设备) | --record-device "USB Mic" |
--record-samplerate HZ | 采集采样率(0=自动) | --record-samplerate 44100 |
--record-channels N | 采集声道数(0=自动) | --record-channels 2 |
--record-duration SEC | 自动停止时长(0=手动 q 停止) | --record-duration 300 |
--record-buffer N | 帧缓冲(64–65536,默认 512) | --record-buffer 512 |
--record-headroom DB | 峰值余量 dB(默认 3.0) | --record-headroom 3 |
--list-devices | 列出可用音频设备 | --list-devices |
输出格式由输出文件扩展名决定(
.dsf/.dff)。
原生 DSD 录制
对于支持原生 DSD 输出的音频接口,DpdoEngine 可以直接录制 DSD 流(DoP 或 ALSA raw DSD):
# DoP 模式录制(PortAudio,兼容性广)
DpdoEngine --record-dsd --dsd-mode dop live.dsf
# Native 模式录制(ALSA raw DSD_U32_BE,需设备支持)
DpdoEngine --record-dsd --dsd-mode native live.dsf
录制的 DSD 流无需经过 PCM 中间格式转换,直接从 ADC 获取 PDM 比特流并打包为 DSF 文件,确保了录音环节的极致纯净。
录音 + 实时监听
录音的同时通过 DpdoPlayer 实时监听,零延迟:
# 录音并实时监听
DpdoEngine --record recording.dsf --pipe | DpdoPlayer - -vol 70
数据统计与日志
统计数据
DpdoEngine -i input.wav output.dsf --oversampling 128 --stats
输出统计信息包括: - 输入/输出采样率 - 处理时间与利用率 - 峰值与 RMS 电平 - 噪声底限 - 动态范围
详细日志
默认情况下,DpdoEngine 会在终端输出处理进度。若要保存日志:
DpdoEngine -i input.wav output.dsf --oversampling 128 2>&1 | tee conversion.log
自动化脚本参考
全专辑转换(带元数据)
#!/bin/bash
# 批量转换整张专辑,为每首曲目添加元数据
ALBUM="Symphony No. 9"
ARTIST="Beethoven"
YEAR=2024
for f in *.flac; do
TITLE="${f%.flac}"
DpdoEngine -i "$f" "${f%.flac}.dsf" \
--oversampling 128 --order 7 \
--artist "$ARTIST" \
--album "$ALBUM" \
--title "$TITLE" \
--year "$YEAR"
done
文件夹监听 + 自动转换
# 使用 inotifywait 监听文件夹,新文件自动转换
inotifywait -m /watch/folder -e close_write --format '%f' | while read f; do
if [[ "$f" == *.flac || "$f" == *.wav ]]; then
DpdoEngine -i "/watch/folder/$f" "/output/${f%.*}.dsf" --oversampling 64 --order 7
fi
done
配合 DpdoPackSACD 一次性完成专辑打包
#!/bin/bash
# 批量转换 → 打包 SACD ISO
for f in *.flac; do
DpdoEngine -i "$f" "${f%.flac}.dsf" --oversampling 128 --order 7 \
--artist "Artist" --album "Album" --title "${f%.flac}"
done
# 打包为 SACD ISO
DpdoPackSACD --album "Album" --artist "Artist" -cover cover.jpg *.dsf