{{ t.message }}
♻️ 偵測到 {{ resumeQueue.length }} 個被中斷的任務,是否恢復轉碼?

📁 監控資料夾

📁
{{ wf.folder.label || wf.folder.path }} {{ wf.folder.path }}
{{ wf.folder.file_count }} 個影片 {{ formatSize(wf.folder.total_size) }}

尚未新增監控資料夾


已選 {{ selectedFiles.length }} / {{ allWatchFiles.length }}
選擇目錄
📁..
📁{{ f.name }}
無子目錄
目前:{{ fileBrowser.current }}
選擇匯出目錄
📁..
📁{{ f.name }}
無子目錄
目前:{{ folderDirBrowser.current }}

⚙️ 轉碼設定

📋 任務列表 {{ totalEta }}

{{ t.task_id }} {{ t.status }} {{ t.eta }}

開始:{{ new Date(t.created_at).toLocaleString('zh-TW') }}

{{ (t.current_index || 0) + 1 }}/{{ t.total_files }} 目前:{{ t.current_file }}

輸出:{{ t.output_path }}

{{ t.progress }}% {{ t.speed ? '| ' + t.speed : '' }} {{ t.message }}
⚠ {{ t.failed_files.length }} 個檔案轉碼失敗
  • {{ f.file }}: {{ f.error }}

⏱️ 跑分測試

CPU: {{ sysInfo.cpu }} ({{ sysInfo.cores }}核 / {{ sysInfo.threads }}執行緒)
GPU: {{ sysInfo.gpu }}
記憶體: {{ sysInfo.memory }}   系統: {{ sysInfo.os }}
排行榜 跑分測試 我的記錄
全部 {{ enc }}
{{ group.encoder }}
{{ r.note }}
{{ r.chip }}
{{ r.chip }}
{{ r.note }}
{{ r.score }}

暫無排行榜資料

點擊可用的編碼器卡片選擇跑分

{{ hardware.ffmpeg_version }}

{{ hwIcon(e.hw_type) }}
{{ e.label }}
{{ e.name }} {{ e.available ? '✓ 可用' : '✗ 不可用' }}
得分:{{ encoderScore(e.name) }}
已選 {{ benchEncoders.length }} 個編碼器 未選擇,將測試全部可用編碼器

正在進行跑分測試…

{{ benchRoundInfo }}

編碼器FPS耗時(s)大小得分狀態
{{ r.label }} {{ r.error ? '-' : r.fps }} {{ r.elapsed }} {{ r.error ? '-' : formatSize(r.output_size) }} {{ r.error ? '-' : r.score }} {{ r.error }} OK
{{ r.label }}
{{ r.score }}
編碼器FPS耗時(s)大小得分狀態
{{ r.label }} {{ r.error ? '-' : r.fps }} {{ r.elapsed }} {{ r.error ? '-' : formatSize(r.output_size) }} {{ r.error ? '-' : r.score }} {{ r.error }} OK

暫無跑分記錄,請先進行跑分測試

🎛️ 預設管理

{{ p.name }} 內建
編碼器:{{ p.encoder }} | CRF: {{ p.crf }} | Preset: {{ p.preset }}
{{ presetCmd(p) }}
新增預設

🔔 外部通知設定

ℹ️ 轉碼任務完成或失敗時,自動發送通知到 Discord 或 Email。
🟣 Discord Webhook
在 Discord 頻道設定 → 整合 → Webhook 取得 URL
{{ discordTestResult.ok ? '✓ 發送成功' : '✗ ' + discordTestResult.error }}
📧 Email (SMTP)
Gmail 需使用「應用程式密碼」,不是帳戶密碼
{{ emailTestResult.ok ? '✓ 發送成功' : '✗ ' + emailTestResult.error }}
✓ 已自動儲存

🧹 原檔清理

ℹ️ 掃描轉碼任務歷史,找出可安全刪除的原始檔案(AV1 輸出比原檔更小時)。

⚠️ 刪除後無法復原,請確認已備份重要檔案

找到 {{ cleanupItems.length }} 對 · 可刪除 {{ cleanupItems.filter(i=>i.can_delete).length }} 個 · 可節省 {{ formatSize(cleanupItems.filter(i=>i.can_delete).reduce((a,b)=>a+b.saved,0)) }}
已選 {{ cleanupSelected.length }} 個
已選 {{ av1Selected.length }} 個
{{ item.source_name }}
→ {{ item.av1_name }}
{{ formatSize(item.source_size) }} → {{ formatSize(item.av1_size) }}
節省 {{ formatSize(item.saved) }} ({{ item.saved_pct.toFixed(1) }}%)
⚠️ AV1 更大,略過

尚未掃描,或找不到配對的轉碼記錄

確認刪除

即將刪除 {{ cleanupSelected.length }} 個原始檔案,共 {{ formatSize(cleanupItems.filter(i=>cleanupSelected.includes(i.source)).reduce((a,b)=>a+b.source_size,0)) }}

⚠️ 此操作不可逆,刪除後無法復原!

確認刪除 AV1 檔案

即將刪除 {{ av1Selected.length }} 個 AV1 輸出檔案。

這些 AV1 檔案比原始檔案更大,刪除後可釋放空間。

⚠️ 此操作不可逆,刪除後無法復原!

📊 轉碼報告 任務 {{ reportTask.task_id }}
📁 檔案數
{{ reportTask.file_stats.length }} 個
📦 原始大小
{{ formatSize(reportTask.file_stats.reduce((s, f) => s + f.src_size, 0)) }}
🗜 轉碼後大小
{{ formatSize(reportTask.file_stats.reduce((s, f) => s + f.dst_size, 0)) }}
💾 節省空間
{{ compressionRatio( reportTask.file_stats.reduce((s, f) => s + f.src_size, 0), reportTask.file_stats.reduce((s, f) => s + f.dst_size, 0) ) }}
⏱ 總耗時
{{ reportTask.eta || 'N/A' }}
檔案名稱 原始大小 轉碼後 節省 耗時 速度
{{ stat.filename }} {{ formatSize(stat.src_size) }} {{ formatSize(stat.dst_size) }} {{ compressionRatio(stat.src_size, stat.dst_size) }} {{ stat.elapsed >= 3600 ? Math.floor(stat.elapsed/3600) + 'h' + Math.floor((stat.elapsed%3600)/60) + 'm' : stat.elapsed >= 60 ? Math.floor(stat.elapsed/60) + 'm' + Math.floor(stat.elapsed%60) + 's' : Math.round(stat.elapsed) + 's' }} {{ avgFps(stat) }}

{{ reportTask.file_stats[0].filename }}

速度:{{ avgFps(reportTask.file_stats[0]) }}