[分享] 字幕閱讀器(支援 Netflix, Disney+, Youtube, KKTV 等影音平台)
文章瀏覽次數 20373 文章回覆數 169
留言
謝老師可以考慮增加:
- 手勢:學習目前字幕容器
(也要有使用說明:按[NVDA+數字鍵]就那幾個移到…物件,讀到字幕才算找到容器,然後讓程式抓容器…學習目前…) - 偏好設定:正規表達式過濾(每行一個):
(過濾容器字幕以外雜訊。) - 手勢:複製最後一條字幕到剪貼簿
(方便過濾雜訊)
這樣不論什麼瀏覽器、串流影音平台、國家、位置…,至少Movie Subtitles的字幕都可以報讀。
字幕閱讀器的運作原理,其實不是告訴她「這個是播放器、這個是字幕容器、這個是字幕文字」
而是告訴他,我要往哪個方向找東西,而這個東西的特徵是什麼。
所以你指定了某個物件,告訴她這個是字幕容器,其實你 F5 重整之後,閱讀器就認不出來了,因為不知道特徵是什麼。
原來如此。
難怪我切下一集時都要重抓一次…
可能是AI取名不夠精準吧~大概因為剛開始它只盯文字,報讀結果就一直重複同一句。然後它就自己轉換說改盯容器了…
它是有提議說:可以改成有記憶的(好像是依照螢幕位置),我嫌繁複就没做了。
不過,
還是很爽
雖然每次都要手動一次…[被踢飛]
Maxe
回復 @cch 這個擴充功能比較特別的是,他會把多長時間沒有字幕顯示出來,我有找到 Silence Indicator 不知道是否跟這個有關,也不知道怎麼開關他。
------我是分隔線------
回覆謝老師
在點擊Movie Subtitles圖示要載入字幕那個介面底下就有。
不過,
它的<核許方塊>勾選和取消没那麼即時,必須要關掉介面再點進去才看得到變化。
今晚才拆Movie Subtitles問AI。
------我是分隔線------
Q:
介面裡的Silence Indicator是做什麼的?
可以介紹原本介面裡的功能嗎
AI:
在您提供的「Movie Subtitles」擴充功能中,針對您的提問,我整理了該介面功能的解析。
1. 關於 "Silence Indicator" 的功能
在字幕外掛的語境中,Silence Indicator (靜音指示器/留白指示器) 通常是用於處理「字幕與語音節奏不對稱」的問題。
- 它的用途:當您在看電影時,如果字幕檔中存在大量連續的「空白區間」(即長時間沒有對話),Silence Indicator 的作用是協助系統標記或跳過這些無聲片段,避免在沒有台詞的時間點出現擾人的殘留字幕,或是在音軌處理時進行對齊校正。
- 具體執行邏輯:它會偵測字幕檔(如 SRT 格式)的時間戳。如果兩段字幕之間的時間差超過了預設的「靜音閾值」,它會介入處理,確保播放器不會錯誤地顯示前一段的字幕,或是觸發靜音狀態下的特殊邏輯(例如在完全安靜時暫停顯示功能)。
2. 介面既有功能簡介
為了讓您更清楚「Movie Subtitles」的核心邏輯,以下是常見的介面功能分佈說明(對應您上傳的 contentScript 與 manifest 架構):
| 功能模組 | 功能描述 |
|---|---|
| Subtitle Loader (字幕載入) | 核心功能,負責讀取本機的 .srt 或 .vtt 檔案,並將其解析為時間對應的文字物件。 |
| Icon Wrapper (工具列) | 即您程式碼中的 npm-video-player-detector-icon-wrapper,這是外掛在影片播放器上的「掛載點」。它負責在頁面中注入控制按鈕(如播放、設定、字幕開關)。 |
| Sync Control (同步控制) | 調整字幕出現時間的延遲(Offset)。若影片與字幕慢了 1 秒,使用者可在此手動增減時間軸。 |
| Container Controller | 負責創建 npm-video-player-detector-container,這是一個覆蓋在影片播放器之上的透明層,用來確保字幕渲染的位置不會被網頁的 CSS 干擾。 |
| Settings (設定面板) | 即您檔案中的 icons8-settings-32.png 對應的面板,用於調整字體大小、顏色、透明度,以及開關「自動偵測播放器」等功能。 |
Q:
Edit Mode的功能?
AI:
在「Movie Subtitles」這類擴充功能中,Edit Mode (編輯模式) 的核心價值在於解決字幕與影片內容的不一致。當您載入的字幕檔時間軸不準、翻譯錯誤,或是想要針對特定段落進行「客製化處理」時,Edit Mode 就是您的專屬編輯台。
Edit Mode 的核心功能與作業邏輯
編輯模式通常允許您在不離開當前頁面的情況下,即時修正字幕資訊:
-
字幕內容修正:
- 允許您直接選取畫面上的字幕文字進行覆寫。若自動翻譯的語句不通順,您可以在觀影當下立刻修正。
-
時間軸微調 (Timing Adjustment):
- 字幕與聲音總是差了幾百毫秒嗎?在編輯模式下,您可以針對當前出現的字幕片段進行「時間位移」調整,將其與當下聽到的聲音同步。
-
片段刪除或隱藏:
- 若某段字幕是不必要的雜訊,或因為網頁廣告導致字幕誤顯示,您可以透過編輯模式標記該片段為「不可見」。
-
樣式即時預覽:
- 調整字體大小、顏色、背景透明度。當您在編輯模式下變更這些設定時,字幕會即時更新樣式,讓您確認是否已達到最佳觀影體驗。
與其他功能的協作關係
-
與 "Silence Indicator" 的互動:
-
在 Edit Mode 下,您通常可以手動定義何處為「靜音區間」。若自動偵測失敗,您可以在編輯模式中標記這段長空白為「無字幕」,這會直接回饋到系統的
Silence Indicator參數中,優化後續的自動顯示效能。 -
與未來「語音報讀 (TTS)」的關係:
-
若您進入編輯模式,系統通常會暫停影片播放。這時若您修正了字幕,TTS 引擎會重新讀取修正後的文字,確保報讀內容與您修改後的版本一致。
技術實現面簡述 (基於您的檔案)
如果您打算優化此功能,在 contentScript.bundle.js 中,Edit Mode 通常涉及:
- DOM 事件攔截:切換至編輯模式時,會移除原本的「純觀影互動(如點擊播放)」並改為「選取編輯互動」。
- 狀態標記 (State Flag):透過一個全域變數(例如
isEditing)來控制字幕容器的contenteditable屬性或是彈出式編輯框的顯示。