SJL
1
字幕提取失败:
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”的报告。
SJL
3
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)。这将有助于我查明该版本中是否存在已知的验证器错误。
SJL
5
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 多年来从未遇到过这个问题。我再深入检查一下,看看能发现什么。
SJL
7
Jon,当缺少 SRT 文件时,我的变通方法是在处理过程中监视临时文件夹。如果存在字幕,程序会创建 SRT 文件,但在处理结束前又会将其删除。当我看到 SRT 文件的大小变得不为零时,我会暂停处理并复制该 SRT 文件。
Goose
(Goose)
8
这并不正常。如果你能看到并且可以手动复制一个非零大小的 SRT 文件,那么它应该会被 MCEBuddy 直接复制到目标文件夹中。
你能附上你的转换日志以便我看看发生了什么吗?
SJL
9
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: 检测到空字符,不是文本文件
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 文件吗?以便我们可以对其进行分析,看看究竟发生了什么。
SJL
11
你可能以为我应该预见到你需要原始视频文件。遗憾的是,我没有。我已经附上了 SRT 文件。我也会安排额外录制各种节目,以尝试捕获另一个示例。PBS 的无线 (Over-The-Air) 录像似乎最有可能出现这个问题。我相信(最多)一周内就会出现一个新的例子。
The Kimberley Australia’s Wild West (2026) - S01E01 - River Of Life (2026-04-05).srt (56.7 KB)
上传的录像文件最大能有多大?我想我很快就会知道了。
SJL
13
这是昨晚的一个例子。
糟糕,文件大小超限了:
抱歉,该文件过大(最大限制为 10 MB)。何不将您的大文件上传到云存储服务,然后粘贴链接呢?
我已经把文件放到 Google 云端硬盘里了:MCEBuddy - Google Drive
SJL
14
这是另一个示例:CBS News Sunday Morning (OTA 录制)。我已经把文件上传到 OneDrive 了:MCEBuddy
Goose
(Goose)
15
感谢反馈,该问题已在今天的 2.7.2 测试版构建中修复。您可以尝试一下,如果仍有任何问题请随时告诉我们。
SJL
16
嗨,Goose。
太好了。这正属于那种“我没消息就是好消息”的情况。根据以往的经验,我绝对预计在一周内会出现问题。如果这个问题再次出现,我会在这里发帖。
Steve