Dramatically improve commercial skip in USA

The Plex folks have missed a critically important Comskip setting, that (in my experience) takes commercial skipping from “ineffective” to “brilliant”. I’ve tested this with multiple recordings, and it works for me in the USA.

In /usr/lib/plexmediaserver/Resources/comskip.ini, change:

  • intelligent_brightness=0 to intelligent_brightness=1
  • cut_on_ar_change=1 to cut_on_ar_change=2

The intelligent_brightness is the most important setting to change. It will “use a USA specific algorithm to tune some of the settings”.

You will have to find a way to update this setting at every Plex upgrade, as it seems the file is replaced when Plex is updated.

Drop a reply if you see an improvement!

3 Likes

I don’t record much but will try it out. Too bad they don’t just make this chance in the source for us.

This is not true, you just have to put the file here: C:\Users\ [username] \AppData\Local\Plex Media Server\DVR

It leaves it untouched between server upgrades, I’ve had my own custom Comskip.ini file for a while now, and both these settings were already done and it’s been removing commercials like a champ.

C’mon, don’t stop there. Any other must-tweak settings in comskip for US shows?

1 Like

This works for the vast majority of shows, nothing is 100% perfect unfortunately, so there have been a few hiccups even with it. But it’s a really good starting point, 1000 times better than the default plex settings

detect_method=127 ; 1=black frame, 2=logo, 4=scene change, 8=fuzzy logic, 16=closed captions, 32=aspect ration, 64=silence, 128=cutscenes, 255=all
validate_silence=1 ; Default, set to 0 to force using this clues if selected above.
validate_uniform=1 ; Default, set to 0 to force using this clues (like pure white frames) if blackframe is selected above.
validate_scenechange=1 ; Default, set to 0 to force using this clues if selected above.
verbose=1 ; show a lot of extra info, level 5 is also OK, set to 0 to disable
max_brightness=60 ; frame not black if any pixels checked are greater than this (scale 0 to 255)
test_brightness=40 ; frame not pure black if any pixels checked are greater than this, will check average brightness (scale 0 to 255)
max_avg_brightness=25 ; maximum average brightness for a dim frame to be considered black (scale 0 to 255) 0 means autosetting
max_commercialbreak=600 ; maximum length in seconds to consider a segment a commercial break
min_commercialbreak=15 ; minimum length in seconds to consider a segment a commercial break
max_commercial_size=300 ; maximum time in seconds for a single commercial or multiple commercials if no breaks in between
min_commercial_size=4 ; mimimum time in seconds for a single commercial
min_show_segment_length=126 ; any segment longer than this will be scored towards show.
non_uniformity=500 ; Set to 0 to disable cutpoints based on uniform frames
max_volume=500 ; any frame with sound volume larger than this will not be regarded as black frame
min_silence=12 ; Any deep silence longer than this amount  of frames is a possible cutpoint
ticker_tape=0 ; Amount of pixels from bottom to ignore in all processing
logo_at_bottom=1 ; Set to 1 to search only for logo at the lower half of the video, do not combine with subtitle setting
punish=0 ; Compare to average for sum of 1=brightness, 2=uniform 4=volume, 8=silence, 16=schange, set to 0 to disable
punish_threshold=1.3 ; Multiply when amount is above average * punish_threshold
punish_modifier=2 ; When above average * threshold multiply score by this value
intelligent_brightness=1 ; Set to 1 to use a USA specific algorithm to tune some of the settings, not adviced outside the USA
logo_percentile=0.92 ; if more then this amount of logo is found then logo detection will be disabled
logo_threshold=0.75
punish_no_logo=0 ; Default, set to 0 to avoid show segments without logo to be scored towards commercial
aggressive_logo_rejection=0
connect_blocks_with_logo=1 ; set to 1 if you want successive blocks with logo on the transition to be regarded as connected, set to 0 to disable
logo_filter=0 ; set the size of the filter to apply to bad logo detection, 4 seems to be a good value.
cut_on_ar_change=2 ; set to 1 if you want to cut also on aspect ratio changes when logo is present, set to 2 to force cuts on aspect ratio changes. set to 0 to disable
delete_show_after_last_commercial=0 ; set to 1 if you want to delete the last block if its a show and after a commercial
delete_show_before_or_after_current=0 ; set to 1 if you want to delete the previous and the next show in the recording, this can lead to the deletion of trailers of next show
delete_block_after_commercial=0 ; set to max size of block in seconds to be discarded, set to 0 to disable
remove_before=0 ; amount of seconds of show to be removed before ALL commercials
remove_after=0 ; amount of seconds of show to be removed after ALL commercials
shrink_logo=5 ; Reduce the duration of the logo with this amount of seconds
after_logo=0 ; set to number of seconds after logo disappears comskip should start to search for silence to insert an additional cutpoint
always_keep_last_seconds=300 ; Any commercial at the end shorter then this amount of seconds will be regarded as show
always_keep_first_seconds=300 ; Any commercial at the beginning shorter than this amount of seconds will be regarded as show
padding=0
ms_audio_delay=5
volume_slip=40
skip_b_frames=0 ; Set to 1 to force Comskip to skip frames for higher processing speed.
max_repair_size=200 ; Will repair maximum 200 missing MPEG frames in the timeline, set to 0 to disable repairing for players that don't use PTS.
disable_heuristics=4 ; bit pattern for disabling heuristics, adding 1 disables heristics 1, adding 2 disables heristics 2, adding 4 disables heristics 3, 255  disables all heuristics
delete_logo_file=0 ; set to 1 if you want comskip to tidy up after finishing
output_framearray=0 ; create a big excel file for detailed analysis, set to 0 to disable
output_data=0 ; create a dump of the user data channel, used for CC and XDS (such as V-Chip info). Can be use together with output_framearray to remote debug CC decoding
output_videoredo=0 ; The old videoredo format
output_videoredo3=0 ; The new videoredo v3 format.
output_womble=0
output_mls=0 ; set to 1 if you want MPeg Video Wizard bookmark file output
output_cuttermaran=0
output_mpeg2schnitt=0
output_mpgtx=0
output_dvrcut=0
output_zoomplayer_chapter=0
output_zoomplayer_cutlist=0
output_edl=1
output_dvrmstb=0 ; Set to 1 if you're running DVRMS-Toolbox
output_edlx=0
output_vcf=0
output_bsplayer=0
output_btv=0 ; set to 1 if you want Beyond TV chapter cutlist output
output_projectx=0 ; set to 1 if you want ProjectX cutlist output (Xcl)
output_avisynth=0
output_vdr=0 ; set to 1 if you want XBMC to skipping commercials
output_demux=0 ; set to 1 if you want comskip to demux the mpeg file while scanning
sage_framenumber_bug=0
sage_minute_bug=0
live_tv=0 ; set to 1 if you use parallelprocessing and need the output while recording
live_tv_retries=4 ; change to 16 when using live_tv in BTV, used for mpeg PS and TS
dvrms_live_tv_retries=300 ; only used for dvr_ms
standoff=0 ; change to 8000000 when using live_tv in BTV
cuttermaran_options="cut=\"true\" unattended=\"true\" muxResult=\"false\" snapToCutPoints=\"true\" closeApp=\"true\""
mpeg2schnitt_options="mpeg2schnitt.exe /S /E /R25  /Z %2 %1"
avisynth_options="LoadPlugin(\"MPEG2Dec3.dll\") \nMPEG2Source(\"%s\")\n"
dvrcut_options="dvrcut \"%s.dvr-ms\" \"%s_clean.dvr-ms\" "
windowtitle="Comskip - %s"
hardware_decode=1
cut_on_ac_change=1
subtitles=0

6 Likes

This change appears to be working well for me. Seamless transitions now, making it hard to tell there was even a commercial break.

1 Like

Nice! Works well for Jeopardy.

1 Like

What OS are you using? on macOS Catalina there is no folder “plexmediaserver” under /usr/lib… Thanks.

1 Like

On macOS you need to place your custom comskip.ini file in this path:

~/Library/Application Support/Plex Media Server/DVR/

If the DVR folder doesn’t already exist, create it. You can find the default copy of comskip.ini in this path:

/Applications/Plex Media Server.app/Contents/Resources/comskip.ini

You can modify that one in-place, but it will be overwritten whenever you upgrade.

2 Likes

Hi dhk1 I’m using w10 & am in Australia. It was great until a release our two ago thanks

To Get It Working Go Back To Version 1.18.5.2309

Sweet advice. I shall try it asap. versions after that, I guess just broke commercials ? I am on 1.18.7.2457. Plex don’t help with older versions but I found it on filehorse, which appears to have ok reviews and is safe…

As I understand the use of custom ini files, they will revert after every update. So it’s best to keep a copy safe.

SE, that’s only if you keep them in the standard location in the PMS folder @ C:/Program Files/Plex Media Server/whatever the rest is.

If you create a DVR Folder @ C:/Users/USERNAMEHERE/Appdata/Local/Plex Media Server and place the .ini file inside there, it will use that instead and not get wiped out after every update :slight_smile:

1 Like

Thanks Jason for the correction, as for MacOS?

1 Like

Mac path is here: ~/Library/Application Support/Plex Media Server/DVR/

The DVR Folder will not be there, you have to create it and then place the comskip.ini inside of it.

1 Like

Thanks for this! Any hints for the needed directory path for freebsd/FreeNAS?

Thanks.

Generally, it needs to go in the DVR folder in your Plex data directory. If it doesn’t exist, you need to create it. For example, on FreeBSD your custom comskip.ini would live in:

/usr/local/plexdata/Plex Media Server/DVR/
1 Like

@nickewi Thanks heaps for your top advice. It now works fine after 3+months. So good not to have to wade thru adds. :slight_smile: and thanks to @pshanew and others, if I ever do upgrade PMS, I won’t lose the commercials fn.
Only problem now is I am not game to ever upgrade PMS for fear of losing the commercials skip fn. I wonder if they know it’s broken after 1.18.5.2309.

General Question: How do you go about requesting a response from PLEX support ? In this instance I want to see when they are doing a PMS release that fixes the commercial skipping function that broke after 1.18.5.2309. It appears that this forum is the only interface for any sort of support (and it looks to be only the (great) community), but how to get PLEX’s attention ?? Hmmmm.