#!/bin/bash# 提示使用者輸入檔案路徑echo "請輸入輸入檔案的完整路徑:"read -e -p "路徑: " input_file# 取得輸入檔案的目錄與名稱input_dir=$(dirname "$input_file") # 取得輸入檔案的目錄input_filename=$(basename "$input_file") # 取得輸入檔案名稱# 移除副檔名,並加上 .webmoutput_name="${input_filename%.*}.webm"# 設定輸出檔案的完整路徑(與輸入檔案相同目錄)output_file="${input_dir}/${output_name}"# 提示使用者輸入 CRF 值(範圍 0-63)while true; do echo "請輸入影片的 CRF 值(範圍 0-63,值越大畫質越低):" read -e -p "CRF: " crf_value if [[ "$crf_value" =~ ^[0-9]+$ ]] && ((crf_value >= 0 && crf_value <= 63)); then break else echo "❌ 錯誤: CRF 值必須是 0 到 63 之間的數字" fidone# 提示使用者輸入音訊比特率(僅輸入數字)while true; do echo "請輸入音訊比特率(僅輸入數字,例如 64、128,單位為 kbps):" read -e -p "比特率: " audio_bitrate if [[ "$audio_bitrate" =~ ^[0-9]+$ ]]; then audio_bitrate="${audio_bitrate}k" # 自動補上 "k" break else echo "❌ 錯誤: 請輸入數字,例如 64、128" fidone# 檢查輸入檔案是否存在if [ ! -f "$input_file" ]; then echo "❌ 錯誤: 輸入檔案不存在" exit 1fi# 記錄開始時間start_time=$(date +%s)# 執行 FFmpeg 轉換ffmpeg -i "$input_file" \ -c:v libvpx-vp9 -crf "$crf_value" -b:v 0 \ -vf "scale='if(gt(iw/ih,1280/720),1280,-1)':'if(gt(iw/ih,1280/720),-1,720)'" \ -c:a libopus -b:a "$audio_bitrate" \ "$output_file"# 記錄結束時間end_time=$(date +%s)# 檢查轉換結果if [ $? -eq 0 ]; then elapsed_time=$((end_time - start_time)) minutes=$((elapsed_time / 60)) seconds=$((elapsed_time % 60)) echo "✅ 轉換成功: $output_file" echo "⏳ 轉換花費時間: ${minutes} 分 ${seconds} 秒" termux-toast "FFmpeg 轉檔完成!" && termux-vibrate -d 1000else echo "❌ 轉換失敗"fi