159 lines
3.1 KiB
Bash
159 lines
3.1 KiB
Bash
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
COLOR_RED='\033[0;31m'
|
|
COLOR_GREEN='\033[0;32m'
|
|
COLOR_CYAN='\033[0;36m'
|
|
COLOR_YELLOW='\033[1;33m'
|
|
COLOR_WHITE='\033[0;37m'
|
|
COLOR_RESET='\033[0m'
|
|
|
|
log_info() {
|
|
echo -e "${COLOR_CYAN}$*${COLOR_RESET}"
|
|
}
|
|
|
|
log_error() {
|
|
echo -e "${COLOR_RED}ERROR: $*${COLOR_RESET}" >&2
|
|
}
|
|
|
|
log_success() {
|
|
echo -e "${COLOR_GREEN}$*${COLOR_RESET}"
|
|
}
|
|
|
|
DIRECTORY="."
|
|
VMAF="95.0"
|
|
PRESET="6"
|
|
WORKERS="1"
|
|
SAMPLES="4"
|
|
HWACCEL=""
|
|
USE_HW_WORKER=""
|
|
PLEX_URL=""
|
|
PLEX_TOKEN=""
|
|
LOG_DIR="/opt/Optmiser/logs"
|
|
|
|
|
|
# Parse command line arguments
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
--directory)
|
|
DIRECTORY="$2"
|
|
shift 2
|
|
;;
|
|
--vmaf)
|
|
VMAF="$2"
|
|
shift 2
|
|
;;
|
|
--preset)
|
|
PRESET="$2"
|
|
shift 2
|
|
;;
|
|
--workers)
|
|
WORKERS="$2"
|
|
shift 2
|
|
;;
|
|
--samples)
|
|
SAMPLES="$2"
|
|
shift 2
|
|
;;
|
|
--hwaccel)
|
|
HWACCEL="$2"
|
|
shift 2
|
|
;;
|
|
--use-hardware-worker)
|
|
USE_HARDWARE_WORKER="true"
|
|
shift
|
|
;;
|
|
--plex-url)
|
|
PLEX_URL="$2"
|
|
shift 2
|
|
;;
|
|
--plex-token)
|
|
PLEX_TOKEN="$2"
|
|
shift 2
|
|
;;
|
|
--log-dir)
|
|
LOG_DIR="$2"
|
|
shift 2
|
|
;;
|
|
*)
|
|
DIRECTORY="$1"
|
|
shift
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# Check if python3 is available
|
|
if ! command -v python3 &> /dev/null; then
|
|
if ! command -v python &> /dev/null; then
|
|
log_error "Python 3 not found. Please install Python 3."
|
|
exit 1
|
|
else
|
|
PYTHON_CMD="python"
|
|
fi
|
|
else
|
|
PYTHON_CMD="python3"
|
|
fi
|
|
|
|
# Check if optimize_library.py exists
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
SCRIPT_PATH="$SCRIPT_DIR/optimize_library.py"
|
|
|
|
if [[ ! -f "$SCRIPT_PATH" ]]; then
|
|
log_error "optimize_library.py not found in: $SCRIPT_DIR"
|
|
exit 1
|
|
fi
|
|
|
|
# Build command arguments
|
|
ARGS=(
|
|
"$PYTHON_CMD" "$SCRIPT_PATH"
|
|
"$DIRECTORY"
|
|
--vmaf "$VMAF"
|
|
--preset "$PRESET"
|
|
--workers "$WORKERS"
|
|
--samples "$SAMPLES"
|
|
--log-dir "$LOG_DIR"
|
|
)
|
|
|
|
if [[ -n "$THOROUGH" ]]; then
|
|
ARGS+=(--thorough)
|
|
fi
|
|
|
|
if [[ -n "$HWACCEL" ]]; then
|
|
ARGS+=(--hwaccel "$HWACCEL")
|
|
fi
|
|
|
|
# Print configuration
|
|
log_info "========================================"
|
|
log_info "VMAF Library Optimiser (Linux/Server)"
|
|
log_info "========================================"
|
|
echo ""
|
|
log_info "Directory: $DIRECTORY"
|
|
log_info "Target VMAF: $VMAF"
|
|
log_info "Preset: $PRESET"
|
|
log_info "Workers: $WORKERS"
|
|
log_info "Samples: $SAMPLES"
|
|
log_info "Encoder: $ENCODER"
|
|
if [[ -n "$THOROUGH" ]]; then
|
|
log_info "Thorough: Yes"
|
|
fi
|
|
if [[ -n "$HWACCEL" ]]; then
|
|
log_info "HW Accel: $HWACCEL"
|
|
fi
|
|
echo ""
|
|
log_info "Running optimize_library.py..."
|
|
echo ""
|
|
|
|
# Run the optimisation
|
|
"${ARGS[@]}"
|
|
EXIT_CODE=$?
|
|
|
|
# Handle exit code
|
|
if [ $EXIT_CODE -eq 0 ]; then
|
|
log_success "SUCCESS: Library optimisation completed"
|
|
else
|
|
log_error "optimize_library.py exited with code $EXIT_CODE"
|
|
fi
|
|
|
|
exit $EXIT_CODE
|