Files
cinema-spatial/打包deb.sh
T

86 lines
3.4 KiB
Bash
Raw Normal View History

#!/bin/bash
# 把电影院空间音频全链打包成 deb (2026-09-12)
# 包名 collaplex-cinema-spatial, Arch: all (纯脚本+数据, 无编译)
set -eu
SRC="/home/lou/桌面/工作区/实验/空间音频"
PKG="collaplex-cinema-spatial"
VER="1.1.1"
BUILD="/tmp/${PKG}-deb"
ROOT="/usr/share/cinema-spatial"
SOFA_SRC="$SRC/sofa/H4_HRIR_SOFA/H4_HRIR_SOFA/H4_96K_24bit_512tap_FIR_SOFA.sofa"
echo "=== 1. 准备目录 ==="
rm -rf "$BUILD"
mkdir -p "$BUILD/DEBIAN" "$BUILD/usr/bin" \
"$BUILD${ROOT}/hrir" "$BUILD${ROOT}/sofa" \
"$BUILD/usr/share/pipewire/pipewire.conf.d"
# ★ 源必须是项目目录: 旧版从 ~/.local/bin 拷, 那份可能落后于项目(2026-09-13 补回丢失的 cp)
cp "$SRC/空间音频" "$SRC/mpv-影院" "$BUILD/usr/bin/"
chmod 755 "$BUILD/usr/bin/空间音频" "$BUILD/usr/bin/mpv-影院"
echo "=== 3. HRTF 数据 (12 个 IR + SOFA) ==="
cp "$SRC/hrir/H4-96k/"*.wav "$BUILD${ROOT}/hrir/"
cp "$SOFA_SRC" "$BUILD${ROOT}/sofa/"
echo "=== 4. 项目脚本与文档 ==="
# ★ 音频状态.py 是 CLI 的设备/状态后端(CLI 会去找 $ROOT/音频状态.py), 漏打会致
# "切设备/诊断"直接报"缺 音频状态.py" —— 2026-09-13 补
cp "$SRC/生成配置.py" "$SRC/音频状态.py" "$SRC/换HRTF.sh" "$SRC/README.md" "$BUILD${ROOT}/"
chmod 755 "$BUILD${ROOT}/换HRTF.sh"
echo "=== 5. PipeWire 配置 (用安装路径生成) ==="
mkdir -p "$BUILD${ROOT}/web"
cp "$SRC/web/index.html" "$SRC/web/webui.py" "$SRC/web/启动.sh" "$BUILD${ROOT}/web/" 2>/dev/null \
|| cp "$SRC/web/index.html" "$SRC/web/webui.py" "$BUILD${ROOT}/web/"
CINEMA_SPATIAL_IR="${ROOT}/hrir" \
CINEMA_SPATIAL_OUT="$BUILD/usr/share/pipewire/pipewire.conf.d/90-cinema-spatial.conf" \
python3 "$SRC/生成配置.py"
cp "$SRC/91-clock.conf" \
"$BUILD/usr/share/pipewire/pipewire.conf.d/"
echo "=== 6. control ==="
cat > "$BUILD/DEBIAN/control" <<EOF
Source: collaplex-cinema-spatial
Package: collaplex-cinema-spatial
Section: sound
Priority: optional
Architecture: all
Version: $VER
Maintainer: edgevoid <edgevoid@users.noreply.github.com>
Depends: pipewire, libmysofa1, mpv
Description: Cinema spatial audio for headphones (HRTF virtual surround)
Renders audio into binaural using a SADIE-II human HRTF through a PipeWire
filter-chain virtual sink, so ordinary headphones give a cinema-like
sense of direction and space.
.
Provides two virtual sinks (5.1 passthrough and stereo-upmixed) plus the
space-audio and mpv-cinema commands.
.
Core: image-source room acoustics tracing (8473 early-reflection paths,
0-80 ms) + Sabine statistical tail (80 ms-2 s) -> a 96 kHz true room
impulse response, convolved binaurally; wet path energy-normalised.
EOF
echo "=== 7. 打包 ==="
cat > "$BUILD/DEBIAN/postinst" <<'EOF'
#!/bin/sh
set -e
if [ "$1" = "configure" ]; then
echo "collaplex-cinema-spatial 已安装。"
echo " 命令: 空间音频 开|开5.1|关|状态 mpv-影院 电影.mkv"
echo " 虚拟声卡定义: /usr/share/pipewire/pipewire.conf.d/"
echo " 生效: systemctl --user restart pipewire pipewire-pulse wireplumber"
fi
EOF
chmod 755 "$BUILD/DEBIAN/postinst"
dpkg-deb -b --root-owner-group "$BUILD" "$HOME/桌面/${PKG}_${VER}_all.deb"
echo
echo "=== 结果 ==="
ls -lh "$HOME/桌面/${PKG}_${VER}_all.deb"
echo
dn=$(dpkg-deb -c "$HOME/桌面/${PKG}_${VER}_all.deb" | wc -l)
echo "包内文件数: $dn"
dpkg-deb -c "$HOME/桌面/${PKG}_${VER}_all.deb" | awk '{print $6}' | head -30