Subtitle/Closed captions extraction failing on OTA recordings

Subtitle extraction is failing:

2026-03-31T06:05:26 MCEBuddy.AppWrapper.CCExtractor → Issues · CCExtractor/ccextractor · GitHub
→ Process exited with code 0
→ Checking SRT file S:\MCEBuddy-Temp\working1\Henry David Thoreau S01E01 Who Are We 2026-03-30-2000.srt
INFORMATION> → Validating and cleaning SRT file
ERROR> → Error validating SRT file System.Exception: Null character detected, not a text file
at MCEBuddy.Transcode.CCandSubtitles.SRTValidateAndClean(List`1 srtFiles, Log jobLog, Double offset, Single duration)
ERROR> 2026-03-31T06:05:28 MCEBuddy.Transcode.CCandSubtitles → Error validating Subtitle file
ERROR> 2026-03-31T06:05:28 MCEBuddy.Engine.ConversionJob → Extracting closed captions failed
WARNING> 2026-03-31T06:05:28 MCEBuddy.Engine.ConversionJob → Extracting closed captions failed from original file, trying to extract closed captions from the remuxed file
INFORMATION> 2026-03-31T06:05:28 MCEBuddy.Transcode.CCandSubtitles → Extracting Closed Captions as SRT file

2026-03-31T06:05:39 MCEBuddy.AppWrapper.CCExtractor → Issues · CCExtractor/ccextractor · GitHub
→ Process exited with code 0
→ Checking SRT file S:\MCEBuddy-Temp\working1\Henry David Thoreau S01E01 Who Are We 2026-03-30-2000.srt
INFORMATION> → Validating and cleaning SRT file
ERROR> → Error validating SRT file System.Exception: Null character detected, not a text file
at MCEBuddy.Transcode.CCandSubtitles.SRTValidateAndClean(List`1 srtFiles, Log jobLog, Double offset, Single duration)
ERROR> 2026-03-31T06:05:41 MCEBuddy.Transcode.CCandSubtitles → Error validating Subtitle file
ERROR> 2026-03-31T06:05:41 MCEBuddy.Engine.ConversionJob → Extracting closed captions failed
WARNING> 2026-03-31T06:05:41 MCEBuddy.Engine.ConversionJob → No Subtitle file found after extractionf

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)

It looks like CCExtractor is successfully running (exit code 0), but the resulting SRT file is being rejected by MCEBuddy because it contains null characters (System.Exception: Null character detected, not a text file). This often happens when the stream contains binary noise or the encoding is corrupted.

To help troubleshoot this, could you try the following:

  1. Check CCExtractor Version: Are you using the “stock” CCExtractor that comes with MCEBuddy, or have you swapped it for a different version?
  2. Try a custom CCExtractor command: In your Conversion Task SettingsExpert Settings, try adding -utf8 to the Custom CCExtractor parameters box to see if forcing a specific encoding helps bypass the null character error.
  3. Manual Inspection: If you can, open the temporary SRT file (S:\MCEBuddy-Temp\working1\...srt) in a text editor like Notepad++ before the job finishes/fails to see if it looks like garbage or actual text.

I’ll search the forum to see if there are recent reports of “Null character detected” with the latest OTA recordings.

Henry David Thoreau S01E01 Who Are We 2026-03-30-2000.srt (79.9 KB)

I am reprocessing one of the files that failed. I attached the temporary SRT file. It is a normal SRT file. It does have a NULL character near the end of the file (there may be other NULLs - I did not do an exhaustive search).

I have the “Comskip Donators Version”. But, I am using the default closed captions extractor (unless that is done by the Comskip plugin).

I do not see a “Custom CCExtractor parameters box” in Expert Settings.

It appears the issue is specifically with MCEBuddy’s post-extraction validation. Even though CCExtractor successfully creates the SRT file, MCEBuddy’s engine scans it for “Null characters” (binary zeros) as a safety check to ensure it’s a valid text file. If it finds even one, it rejects the entire file.

Regarding your points:

  1. CCExtractor vs Comskip: You are correct; while Comskip handles the commercial detection, CCExtractor is a separate tool used by MCEBuddy specifically for subtitle extraction.
  2. Custom Parameters Box: My apologies—I should have been more specific. The “Custom CCExtractor parameters” box is actually located in the Profile configuration, not the Conversion Task.

Recommended Steps:

1. Add -utf8 to your Profile

Since you mentioned the SRT file looks “normal” but contains a null character, forcing UTF-8 might help CCExtractor produce a cleaner output that MCEBuddy’s validator accepts.

  1. Open profiles.conf (usually in C:\Program Files\MCEBuddy2x\config).
  2. Find the profile you are using (e.g., [MKV HEVC]).
  3. Add the following line to that profile:
    cc_params=-utf8
  4. Save the file and restart the MCEBuddy service.

2. Disable the Null Character Check (Advanced)

If forcing UTF-8 doesn’t work, there is an internal MCEBuddy setting to skip the validation that is failing.

  1. In the MCEBuddy GUI, click SettingsAdvanced Settings.
  2. Look for a checkbox labeled Skip subtitle validation (or similar, depending on your version).
  3. Alternatively, you can add SkipSubtitleValidation=true to the [Common] section of your mcebuddy.conf file.

3. Why is this happening now?

Since you mentioned this started recently, it’s likely that the OTA broadcaster for “Henry David Thoreau” (or the DVR software) is inserting some stream noise that CCExtractor is interpreting as a character.

If you’re comfortable sharing, could you let me know which version of MCEBuddy you are currently running? (e.g., 2.6.4). This will help me check if there’s a known bug with the validator in that specific build.

MCEBuddy 2.7 Release 1

I’m not sure how long this has been a problem - it has been a problem for at least the past 8 days. It is happening for all episodes of some PBS TV series, but not others.

CC extraction has failed for these new TV Series:
. The Forsytes on Masterpiece (Season 1)
. Henry David Thoreau (Ken Burns series)
. Call the Midwife (Season 15)

But CC extraction is working okay for these TV Series:
. The Count of Monte Cristo on Masterpiece (Season 1)
. Horizons from PBS News (Season 1)
. Compass Points from PBS News (Season 1)

I stopped the MCEBuddy daemon, made both of the suggested changes (assuming I did it correctly) and restarted the MCEBuddy daemon. But these changes did not fix the problem. (But, I was able to capture the temporary SRT files.)

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=