Files
FishServer/scripts/setup_ffmpeg.sh
2026-05-06 15:59:38 +08:00

59 lines
1.6 KiB
Bash

#!/bin/bash
# 下载并设置项目专属的 ffmpeg 静态构建版本
# 这确保项目使用一致的 ffmpeg 版本,避免环境问题
set -e
PROJECT_ROOT="/home/ubuntu/projects/FishServer"
TOOLS_DIR="$PROJECT_ROOT/tools"
FFMPEG_DIR="$TOOLS_DIR/ffmpeg"
FFMPEG_VERSION="6.1.1"
FFMPEG_ARCH="amd64"
echo "[setup-ffmpeg] Setting up project-specific ffmpeg..."
# 创建工具目录
mkdir -p "$TOOLS_DIR"
# 检查是否已存在
if [ -f "$FFMPEG_DIR/bin/ffmpeg" ]; then
echo "[setup-ffmpeg] ffmpeg already exists at $FFMPEG_DIR/bin/ffmpeg"
"$FFMPEG_DIR/bin/ffmpeg" -version | head -1
exit 0
fi
# 下载 ffmpeg 静态构建版本
echo "[setup-ffmpeg] Downloading ffmpeg $FFMPEG_VERSION..."
cd "$TOOLS_DIR"
# 使用 johnvansickle 的静态构建版本
DOWNLOAD_URL="https://johnvansickle.com/ffmpeg/releases/ffmpeg-${FFMPEG_VERSION}-${FFMPEG_ARCH}-static.tar.xz"
TAR_FILE="ffmpeg-${FFMPEG_VERSION}-${FFMPEG_ARCH}-static.tar.xz"
if command -v wget &> /dev/null; then
wget -q --show-progress "$DOWNLOAD_URL" -O "$TAR_FILE"
elif command -v curl &> /dev/null; then
curl -L --progress-bar "$DOWNLOAD_URL" -o "$TAR_FILE"
else
echo "[setup-ffmpeg] Error: wget or curl is required"
exit 1
fi
# 解压
echo "[setup-ffmpeg] Extracting..."
tar -xf "$TAR_FILE"
# 移动到新位置
EXTRACTED_DIR=$(tar -tf "$TAR_FILE" | head -1 | cut -f1 -d"/")
mv "$EXTRACTED_DIR" "$FFMPEG_DIR"
# 清理
rm "$TAR_FILE"
# 验证
echo "[setup-ffmpeg] Verifying installation..."
"$FFMPEG_DIR/bin/ffmpeg" -version | head -1
"$FFMPEG_DIR/bin/ffmpeg" -encoders | grep -i "h264\|x264" | head -5
echo "[setup-ffmpeg] Done! ffmpeg is installed at $FFMPEG_DIR/bin/ffmpeg"