#!/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"