Communitygithub.com

vanechkq/壓縮影片

使用標準 MP4/H.264 設定壓縮現有不透明影片,保留解析度、影格率與時長;預設移除音訊,明確要求時才保留。

壓縮影片 是什麼?

這項技能專注於高效能且可驗證的影片壓縮。它會自動使用 `libx264` 編碼器,搭配 `-crf 23`、`-preset slow`、`yuv420p` 像素格式以及 Faststart 標記,確保輸出檔案在保留原始解析度、影格率與完整時長的前提下達到最佳的播放相容性。**預設完全移除音訊**(僅保留第一個影片串流,並使用 `-an` 參數),若使用者明確要求保留音效,則會嘗試無失真複製(`-c:a copy`),否則重新編碼為 128 kb/s 的 AAC 並告知使用者。技能內建完整的工作流程:檢查來源、使用唯一檔名(例如 `<原名>-compressed.mp4`)、執行 FFmpeg 編碼、驗證輸出串流並比對雜湊值(針對複製的音訊),最後提供可點擊的下載連結,同時附上壓縮前後的檔案大小與音訊處理方式說明。它支援 macOS、Linux 與 Windows 環境,只要系統可調用 `ffmpeg` 與 `ffprobe` 即可運作,非常適合需要在設計匯出後、動畫編輯前,對不透明 SDR 影片進行純壓縮的場景。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add vanechkq/compress-video

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

壓縮影片 是做什麼的?

執行壓縮並交付驗證完成的檔案。此技能獨立運作,無需依賴對話歷史。

標準設定檔

  • MP4 容器;H.264 影片使用 libx264 編碼。
  • -crf 23 -preset slow -pix_fmt yuv420p -movflags +faststart。
  • 保留來源尺寸、影格率與完整時長。除非明確要求,否則不得加入縮放、-r、裁剪或速度調整。
  • 預設:完全移除音訊,使用 -map 0:v:0 -an。單純靜音或編碼無聲串流不等同於移除。
  • 若使用者明確要求聲音,則映射音訊並使用 -c:a copy(適用於 MP4 相容音訊)。此舉可逐位元保留編碼後的音訊。若不相容,則以 128 kb/s 編碼 AAC 並告知重新編碼。來源無音訊時,不得宣稱音訊已被保留。
  • 使用者提供的明確參數會覆蓋預設值。CRF 23 屬於有損影片壓縮:請勿承諾數學上無失真或固定檔案大小。

工作流程

  1. 檢查實際的本地來源:影片/音訊串流、尺寸、影格率、時長與檔案大小。等候下載完成。使用現有的 FFmpeg/FFprobe 或可信任的運行環境;請勿硬編碼其他機器的暫存二進位路徑。若來源無法取得,則要求使用者提供。
  2. 使用新檔名,例如 <來源名稱>-compressed.mp4,並放置於請求的目的地,若未指定則置於來源旁。使用 -n 保留來源與既有輸出。路徑需加引號,避免 shell 對檔名進行插值。
  3. 使用標準設定檔與選定的音訊模式進行編碼。不得為了縮小檔案而默默地降低解析度/影格率或提高 CRF。若輸出結果比來源大,應如實報告,而非宣稱尺寸縮小。
  4. 等待成功完成。檢查輸出串流,並完整解碼檔案以檢查錯誤。確認尺寸/影格率與時長符合來源,允許因容器捨入而產生的正常差異(最多一個影格)。預設模式必須不包含任何音訊串流。若為複製的音訊,需比較編碼後音訊串流的雜湊值。檢查代表性影格的方向、裁切與可見瑕疵。
  5. 提供可點擊的檔案連結、來源 → 輸出檔案大小,以及任何重要的取捨說明。明確指出音訊是已移除、無失真複製或重新編碼。不得刪除或移動來源檔案。

指令

將範例路徑替換為實際路徑。僅執行所選的音訊模式。

預設 — 無音訊串流:

ffmpeg -hide_banner -nostdin -n -i "input.mp4" \
  -map 0:v:0 -c:v libx264 -crf 23 -preset slow \
  -pix_fmt yuv420p -an -movflags +faststart "output-compressed.mp4"

明確保留聲音:

ffmpeg -hide_banner -nostdin -n -i "input.mp4" \
  -map 0:v:0 -map '0:a?' -c:v libx264 -crf 23 -preset slow \
  -pix_fmt yuv420p -c:a copy -movflags +faststart "output-compressed.mp4"

分別檢查來源與輸出,然後解碼輸出:

ffprobe -v error -show_streams -show_format -of json "output-compressed.mp4"
ffmpeg -v error -nostdin -i "output-compressed.mp4" -f null -

若為複製的音訊,對兩個檔案執行以下指令並比較結果。當存在多個音訊串流時,分別選取每個串流:

ffmpeg -v error -i "output-compressed.mp4" -map 0:a:0 \
  -c:a copy -f hash -hash sha256 -

此設定檔適用於不透明 SDR 影片。若需保留透明度、HDR 或多個影片串流,請在轉換前選擇適當的輸出格式/設定檔;一般的 H.264/yuv420p 無法保留 Alpha 通道。

相關技能