批量轉換與錄音
批量模式
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