字幕提取失败:
2026-03-31T06:05:26 MCEBuddy.AppWrapper.CCExtractor → Issues · CCExtractor/ccextractor · GitHub
→ 进程退出码 0
→ 检查 SRT 文件 S:\MCEBuddy-Temp\working1\Henry David Thoreau S01E01 Who Are We 2026-03-30-2000.srt
INFORMATION> → 验证并清理 SRT 文件
ERROR> → 验证 SRT 文件出错 System.Exception: 检测到空字符,不是文本文件
at MCEBuddy.Transcode.CCandSubtitles.SRTValidateAndClean(List`1 srtFiles, Log jobLog, Double offset, Single duration)
ERROR> 2026-03-31T06:05:28 MCEBuddy.Transcode.CCandSubtitles → 字幕文件验证失败
ERROR> 2026-03-31T06:05:28 MCEBuddy.Engine.ConversionJob → 提取隐藏字幕失败
WARNING> 2026-03-31T06:05:28 MCEBuddy.Engine.ConversionJob → 从原文件提取隐藏字幕失败,尝试从 remux 后的文件提取隐藏字幕
INFORMATION> 2026-03-31T06:05:28 MCEBuddy.Transcode.CCandSubtitles → 提取隐藏字幕为 SRT 文件
2026-03-31T06:05:39 MCEBuddy.AppWrapper.CCExtractor → Issues · CCExtractor/ccextractor · GitHub
→ 进程退出码 0
→ 检查 SRT 文件 S:\MCEBuddy-Temp\working1\Henry David Thoreau S01E01 Who Are We 2026-03-30-2000.srt
INFORMATION> → 验证并清理 SRT 文件
ERROR> → 验证 SRT 文件出错 System.Exception: 检测到空字符,不是文本文件
at MCEBuddy.Transcode.CCandSubtitles.SRTValidateAndClean(List`1 srtFiles, Log jobLog, Double offset, Single duration)
ERROR> 2026-03-31T06:05:41 MCEBuddy.Transcode.CCandSubtitles → 字幕文件验证失败
ERROR> 2026-03-31T06:05:41 MCEBuddy.Engine.ConversionJob → 提取隐藏字幕失败
WARNING> 2026-03-31T06:05:41 MCEBuddy.Engine.ConversionJob → 提取后未找到字幕文件
Henry David Thoreau S01E01 Who Are We 2026-03-30-2000.mpg-ChannelsDVR - TV - NO Comskip-2026-03-31T06-00-00.log (1.9 MB)
看起来 CCExtractor 运行成功(退出代码为 0),但生成的 SRT 文件被 MCEBuddy 拒绝了,因为它包含空字符(System.Exception: Null character detected, not a text file)。这种情况通常发生在流中包含二进制噪声或编码损坏时。
为了排查问题,请尝试以下操作:
- 检查 CCExtractor 版本:你使用的是 MCEBuddy 自带的“内置”版 CCExtractor,还是自行更换了其他版本?
- 尝试自定义 CCExtractor 命令:在你的 Conversion Task Settings(转换任务设置) → Expert Settings(专家设置) 中,尝试在 Custom CCExtractor parameters(自定义 CCExtractor 参数) 框中添加
-utf8,看看强制指定编码是否能绕过空字符错误。
- 手动检查:如果可以的话,在任务完成或失败之前,用 Notepad++ 等文本编辑器打开临时 SRT 文件(
S:\MCEBuddy-Temp\working1\...srt),查看它显示的是乱码还是实际的文本内容。
我会在论坛上搜索一下,看看最近是否有关于最新 OTA 录制文件出现“Null character detected”的报告。
Henry David Thoreau S01E01 Who Are We 2026-03-30-2000.srt (79.9 KB)
我正在重新处理一个失败的文件。我附上了临时的SRT文件。这是一个正常的SRT文件。在文件末尾附近确实有一个NULL字符(可能还有其他NULL字符——我没有做全面搜索)。
我有“Comskip Donators Version”。但我使用的是默认的隐藏字幕提取器(除非这是由Comskip插件完成的)。
在“专家设置”中,我没有看到“自定义CCExtractor参数框”。
看来问题出在 MCEBuddy 的提取后验证环节。尽管 CCExtractor 已成功创建了 SRT 文件,但 MCEBuddy 的引擎会对其进行扫描,以检查是否存在“空字符”(二进制零),以此作为确保其为有效文本文件的安全检查。如果发现哪怕一个空字符,它也会拒绝整个文件。
关于你提到的几点:
- CCExtractor 与 Comskip:你说得对;虽然 Comskip 负责广告检测,但 CCExtractor 是 MCEBuddy 专门用于字幕提取的独立工具。
- 自定义参数框:抱歉,我应该说得更具体一点。“自定义 CCExtractor 参数”框实际上位于“配置文件”(Profile) 设置中,而不是在转换任务(Conversion Task)中。
推荐步骤:
1. 在配置文件中添加 -utf8
由于你提到 SRT 文件看起来“正常”但包含空字符,强制使用 UTF-8 编码可能有助于 CCExtractor 生成更符合 MCEBuddy 验证器要求的整洁输出。
- 打开
profiles.conf(通常位于 C:\Program Files\MCEBuddy2x\config)。
- 找到你正在使用的配置文件(例如
[MKV HEVC])。
- 在该配置文件中添加以下行:
cc_params=-utf8
- 保存文件并重启 MCEBuddy 服务。
2. 禁用空字符检查(高级)
如果强制使用 UTF-8 无效,MCEBuddy 中有一个内部设置可以跳过导致失败的验证。
- 在 MCEBuddy 图形界面中,点击 设置 (Settings) → 高级设置 (Advanced Settings)。
- 查找标有 跳过字幕验证 (Skip subtitle validation)(或类似名称,具体取决于你的版本)的复选框。
- 或者,你也可以在
mcebuddy.conf 文件的 [Common] 部分添加 SkipSubtitleValidation=true。
3. 为什么现在会出现这种情况?
既然你提到这是最近才开始的,很可能是“Henry David Thoreau”的 OTA 广播商(或 DVR 软件)在流中加入了一些杂讯,而被 CCExtractor 误解读为了字符。
如果你方便的话,能告诉我你目前运行的是哪个版本的 MCEBuddy 吗?(例如 2.6.4)。这将有助于我查明该版本中是否存在已知的验证器错误。
MCEBuddy 2.7 Release 1
我不確定這個問題已經存在多久了——至少已經有 8 天了。它會發生在某些 PBS 電視劇的所有集數,但其他劇則正常。
這些新電視劇的字幕提取失敗:
. The Forsytes on Masterpiece(第 1 季)
. Henry David Thoreau(Ken Burns 系列)
. Call the Midwife(第 15 季)
但這些電視劇的字幕提取正常:
. The Count of Monte Cristo on Masterpiece(第 1 季)
. Horizons from PBS News(第 1 季)
. Compass Points from PBS News(第 1 季)
我停止 MCEBuddy 服務,做了兩個建議的變更(假設我做對了),然後重新啟動 MCEBuddy 服務。但這些變更沒有解決問題。(不過,我能夠抓到暫存的 SRT 檔案。)
profiles.conf:
[MKV HEVC]
Description=HEVC in MKV (H.265/AC3) conversion. Creates a smaller file (50% smaller than H.264) with comparable quality but very slow.
order=handbrake,ffmpeg
ffmpeg-general=-threads 0
ffmpeg-video=-ss 0 -tag:v hvc1 -vf yadif=0:-1:1,hqdn3d -vcodec libx265 -preset medium -crf 26 -map 0:v -sn
ffmpeg-audio=-acodec ac3 -ab 160k -map 0:a
ffmpeg-audioac3=-acodec ac3 -ab 256k -map 0:a
ffmpeg-ext=.mkv
ffmpeg-audiodelay=skip
handbrake-general=–decomb --loose-anamorphic --verbose=2
handbrake-video=–start-at duration:0 -e x265 --encoder-preset medium -q 26
handbrake-audio=-E ffac3 -R auto -B 160 -D 0 -a 1,2,3,4,5
handbrake-audioac3=-E ffac3 -R auto -B 256 -D 0 -a 1,2,3,4,5
handbrake-ext=.mkv
handbrake-audiodelay=skip
PreConversionCommercialRemover=true
cc_params=-utf8
mcebuddy.conf:
[Engine]
Tasks=Convert to MP4,ChannelsDVR - TV - NO Comskip,ChannelsDVR - TV - Comskip,PlayOnHome - NO Comskip,PlayOnCloud - NO Comskip,PBS - NO Comskip,Manual
SearchRecords=PlayOnHome,ChannelsDVR-TV,PlayOnCloud,PBS
UserName=Guest
DomainName=
ArchiveDomainName=
ArchiveUserName=Guest
FailedDomainName=
FailedUserName=Guest
WakeHour=-1
WakeMinute=-1
StartHour=6
StartMinute=0
StopHour=7
StopMinute=0
DaysOfWeek=Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday
MaxConcurrentJobs=3
LogJobs=True
LogLevel=3
LogKeepDays=15
DeleteOriginal=False
UseRecycleBin=False
ArchiveOriginal=False
DeleteConverted=False
AllowSleep=False
SuspendOnBattery=False
SendEmail=False
Locale=en-US
TempWorkingPath=S:\MCEBuddy-Temp
ArchivePath=
FailedPath=
SpaceCheck=True
CustomComskipPath=C:\Comskip_Donators_Version\comskip.exe
CustomProfilePath=
HangPeriod=300
PollPeriod=60
ProcessPriority=Normal
CPUAffinity=0
EngineRunning=True
LocalServerPort=23332
UPnPEnable=False
FirewallExceptionEnable=False
SubtitleSegmentOffset=0
SkipSubtitleValidation=True
MinimumSegmentSize=4
eMailServer=
eMailPort=25
eMailSSL=False
eMailFrom=
eMailTo=
eMailSuccess=True
eMailFailed=True
eMailCancelled=True
eMailStart=True
eMailDownloadFailed=True
eMailQueue=True
eMailSuccessSubject=
eMailFailedSubject=
eMailCancelledSubject=
eMailStartSubject=
eMailDownloadFailedSubject=
eMailQueueSubject=
eMailSkipBody=False
eMailUsername=
我正在使用最新版本的 MCEBuddy,它一直都能为所有基础有线电视频道生成 SRT 字幕。现在我改用 OTA(无线电视)录制节目,却发现所有的录像都无法生成 SRT 文件——即使是我多年前录制、且原本就有 SRT 文件的节目也是如此(我重新处理了源文件以更改格式)。可能是我针对 SRT 的配置文件设置有误,但我使用 MCEBuddy 多年来从未遇到过这个问题。我再深入检查一下,看看能发现什么。
Jon,當 SRT 遺失時,我的變通方法是監看暫存資料夾並重新執行轉檔。如果有字幕的話,系統會建立 SRT 檔案,但在處理結束前又將其刪除。當我看到 SRT 檔案的大小不再是零時,我就會暫停處理程序並複製該 SRT 檔案。
Goose
(Goose)
8
這是不正常的。如果您能看到並手動複製一個非零大小的 SRT 檔案,那麼 MCEBuddy 就應該可以直接將其複製到目標資料夾中。
您可以附加您的轉換日誌(conversion log),讓我看看發生了什麼事嗎?
Goose
(Goose)
10
這非常有幫助。看起來提取出的 SRT 檔案中似乎有一些無效字元,導致驗證失敗,因此 MCEBuddy 刪除了提取出的字幕。
正在檢查 SRT 檔案 S:\MCEBuddy-Temp\working2\The Kimberley Australia’s Wild West S01E01 River Of Life 2026-06-17-2100.srt
INFORMATION> → 正在驗證並清理 SRT 檔案
ERROR> → 驗證 SRT 檔案時發生錯誤 System.Exception: 偵測到 Null 字元,不是文字檔
at MCEBuddy.Transcode.CCandSubtitles.SRTValidateAndClean(List`1 srtFiles, Log jobLog, Double offset, Single duration)
ERROR> 2026-06-18T16:46:29 MCEBuddy.Transcode.CCandSubtitles → 驗證字幕檔案時發生錯誤
ERROR> 2026-06-18T16:46:29 MCEBuddy.Engine.ConversionJob → 提取隱藏式字幕失敗
您可以上傳原始影片檔和提取出的 SRT 檔案,讓我們進行分析以了解發生了什麼問題嗎?
你可能以為我早就預料到你需要原始影片檔了。很遺憾,我沒想到。我已經附上了 SRT 檔案。我已經並將會安排錄製更多不同的節目,嘗試捕捉到另一個範例。PBS 的無線電視(Over-The-Air)錄影似乎最容易出現這個問題。我相信最多一週內就會出現一個範例。
The Kimberley Australia’s Wild West (2026) - S01E01 - River Of Life (2026-04-05).srt (56.7 KB)
上傳的錄影檔大小上限是多少呢?我想我之後就會知道了。
這裡有一個昨晚的範例。
哎呀。有大小限制:
抱歉,該檔案太大(最大限制為 10 MB)。何不將您的大型檔案上傳至雲端分享服務,然後貼上連結呢?
我已經將檔案放到 Google 雲端硬碟了:MCEBuddy - Google Drive
這裡還有另一個範例:CBS News Sunday Morning(無線電視錄影)。我已經將檔案放到了 OneDrive 上:MCEBuddy
Goose
(Goose)
15
感謝回報,這個問題已在今天釋出的 2.7.2 beta 版本中修復。您可以下載試用,如果仍有任何問題請讓我們知道。
嗨,Goose。
太好了。這就是那種「沒消息就是好消息」的情況。根據以往的經驗,我預計一週內絕對會看到問題再次出現。如果問題重現,我會在這裡發文。
Steve