# 手動影片壓縮
## 入口與輸出
主頁「常用工具」或「工具 → 影片工具 → 影片壓縮」可直接進入;也可使用碼率分析頁工具列「壓縮影片」,或本地錄影詳細頁「壓縮影片」。兩個入口都以頁面推入,不開臨時表單。可從相簿或檔案選取影片;分析頁目前選取的檔案也可帶入。
輸出為 MP4,存入 App 的 Documents/CompressedVideos,可從檔案 App 或文件共享取得,不依賴 App Group。名稱包含原檔名與 UUID,避免覆寫。原檔唯讀;暫存輸出在 App temporaryDirectory,完成媒體驗證後才移入文件目錄。相簿影片以檔案表示複製到 App 暫存,只保留最近一份,換片時刪除;不把整段影片載入記憶體。保留輸出較大的結果,頁面顯示實際增加或減少 MB 與百分比。
## 設定與限制
- H.264;裝置支援硬體 HEVC 時提供 HEVC。完整尺寸/編碼能力仍由 Writer 在開始時驗證。
- 平均影片碼率 0.1–40 Mbps,可輸入小數並使用快捷值。來源 70% 粗估取至 0.1 Mbps,套用時顯示前後值及確認提示;相同值或來源無碼率也有明確回饋。此粗估尚未評估尺寸、FPS、編碼與內容變動,不是畫質保證。
- 長邊預設或自訂顯示寬高上限(各 2…8192 px),保持比例、不裁切且不放大,輸出取偶數。設定框不等於強制輸出尺寸;頁面預覽實際尺寸,直向旋轉影片依觀看方向限制。FPS 可保留、30/60 或自訂 1…120,只丟幀不補幀。
- 保留 AAC、轉 AAC 64/96/128/160/192/256/320 kbps(每軌)/48 kHz(單/雙聲道)或移除音訊。
- 一條影片軌;HDR 暫不支援。原始方向矩陣由既有轉碼器保留。
- 進度依影片 PTS,完成前最高 99%;完成驗證後為 100%。輸出摘要預估包含影片與所有音軌,容器另計;保留音軌缺碼率時明確標示無法估算完整容量。預估不小於原檔時提醒,實際大小仍以產物為準。
全 App 一個任務,跨視窗共用;切到背景會取消,無背景續跑。偵測到 ScreenCaptureKit 工作或近期 ReplayKit publishing 回報會等待。擴展無連線時無法保證偵測,開始前應停止廣播;不把 UI 狀態當跨程序互斥鎖。
## 共用服務
RecordingTranscoder.compress 新增 destination、audioMode、progress。destination 為 nil 時維持錄後「較小才替換」策略;提供新位置則另存,禁止同路徑與既有輸出。系統品質模式亦可另存,無需比原片小。音訊處理預設 preserve,既有呼叫不變。
## 後續與驗收
- [ ] Apple CI:合成影片另存測試通過,原檔 bytes 不變。
- [ ] 實機:直向/橫向、VFR、AAC/PCM、HEVC、不支援 HDR、取消與磁碟不足。
- [ ] 批次任務、背景續跑、任務歷史與目標檔案大小模式。
- [x] 自訂寬高上限、FPS 與 AAC 碼率;完成後可開啟獨立播放器。
- [ ] 自訂參數與播放器實機驗收、完整多語言本地化。
第一版使用者可在檔案 App 管理/刪除輸出;頁面提供播放、分享、詳細資訊與碼率分析;播放頁離開時停止並釋放播放器。
來源與壓縮結果逐軌顯示音訊編碼、取樣率(kHz)、聲道與 estimatedDataRate(kbps,估計值)。格式缺失顯示未提供;沒有音軌則顯示無音訊軌,不以設定值代替實際檔案資訊。
## 系統品質模式
手動頁可切換「自訂平均碼率/系統品質預設」。系統模式列出來源相容且可輸出 MP4 的低、中、最高及 HEVC 最高品質預設;實際匯出仍可能受裝置資源限制而失敗。
選擇系統模式後,隱藏手動編碼、尺寸、FPS、碼率與音訊控制;這些設定不套用,影音輸出由系統決定。容量不做推算,顯示不定進度並支援取消。HDR 仍拒絕;不提供固定品質百分比,也不保證縮小或無損。完成後顯示實際檔案資訊並可播放、分享。
既有錄後系統品質路徑仍要求較小才替換;手動另存保留較大的產物與原檔。新增系統最高品質另存測試,Apple CI 與實機驗收待執行。