Allow "Detect commercials and mark for skip" option for non-DVR libraries

Plex has quietly added a DVR option for “Detect commercials and allow for skip” for new recordings, allowing for non-destructive commercial-skipping at last (and almost identical in usage to the skip-intro feature). Can that option be offered to non-Plex-DVR libraries as well? I’m sure I’m not the only person who records TV through a third-party product, and watch the episodes in Plex in a dedicated library.

Since skip-intro is already available for multiple libraries, theoretically it doesn’t seem to complicated to offer commercial-skip to other libraries too.

1 Like

Assuming you’re using this feature on Plex for iOS / tvOS, it wasn’t added that quietly :wink:

Just in case you made others wonder where to find this feature

It’s in PlexWeb now. I’m not sure if it’s advertised there yet, but if so it snuck by me (possible).

1 Like

Dear @tom80H,

can you confirm that this very useful feature is only for Plex libaries where the Plex DVR services outputs its recordings?

  • What if I transfer these recording files (using file copy) to another Plex library? Will I still be able to have that feature?
  • I also use third-party service to record… I would like to have that feature for use in all libraries where I find it suitable.
  • Can I re-scan a recording for commercial detection?

Is there a document about this feature?

Thx in advance…

1 Like

As far as I can tell, only DVR libraries have it, and DVR recordings have it. So, if I set a location that has other recordings which have been processed by comskip as the destination for a dvr recording, then an option shows up there to detect commercials, but any recordings that were in there - even if they already have comskip data - will not show any commercial skipping options.

I’d like this as well - I record stuff mainly with other software because it supports more tuners than Plex does, and honestly I have years worth of training the software to record stuff I like and that’s not easily transferable to Plex.

Here’s a sample, both of these are from the same library:

<?xml version="1.0" encoding="UTF-8"?>
<MediaContainer size="1" allowSync="1" identifier="com.plexapp.plugins.library" librarySectionID="19" librarySectionTitle="TV Shows" librarySectionUUID="4e3dd448-35a8-4f8a-9d24-f000e8cf9099" mediaTagPrefix="/system/bundle/media/flags/" mediaTagVersion="1601657084">
<Video ratingKey="339949" key="/library/metadata/339949" skipParent="1" grandparentRatingKey="339947" guid="plex://episode/5f56b219aeb921004298ae08" parentGuid="plex://season/5cffa17e49fba9001ea19a7f/2020" grandparentGuid="plex://show/5cffa17e49fba9001ea19a7f" type="episode" title="South Florida at Notre Dame" grandparentKey="/library/metadata/339947" librarySectionTitle="TV Shows" librarySectionID="19" librarySectionKey="/library/sections/19" grandparentTitle="College Football" parentTitle="Season 2020" summary="South Florida (1-0) at Notre Dame (1-0). From Notre Dame Stadium." parentIndex="2020" viewOffset="972000" lastViewedAt="1602677733" year="2020" thumb="/library/metadata/339949/thumb/1600552804" grandparentThumb="/library/metadata/339947/thumb/1600552804" duration="12597731" originallyAvailableAt="2020-09-19" addedAt="1600552801" updatedAt="1600552804" oneShot="1">
<Media id="328654" duration="12597731" bitrate="41224" width="1920" height="1080" aspectRatio="1.78" audioChannels="6" audioCodec="ac3" videoCodec="h264" videoResolution="1080" container="mpegts" videoFrameRate="NTSC" channelIdentifier="550" mediaGrabBeginsAt="1600540200" mediaGrabDevice="device://tv.plex.grabbers.hdhomerun/132532B5" mediaGrabStatus="complete" origin="dvr" videoProfile="main">
<Part accessible="1" exists="1" id="334909" key="/library/parts/334909/1600552800/file.ts" duration="12597731" file="F:\SageTV\College Football (2019)\Season 2020\College Football (2019) - 2020-09-19 08 00 00 - South Florida at Notre Dame.ts" size="35580024036" container="mpegts" deepAnalysisVersion="4" indexes="sd" packetLength="188" requiredBandwidths="61351,55364,41048,35555,33603,31715,25054,24194" videoProfile="main">
<Stream id="615276" streamType="1" codec="h264" index="0" bitrate="20327" bitDepth="8" chromaLocation="left" chromaSubsampling="4:2:0" closedCaptions="1" codedHeight="1088" codedWidth="1920" frameRate="29.970" hasScalingMatrix="0" height="1080" level="40" profile="main" refFrames="4" requiredBandwidths="60773,54785,40473,34979,33027,31139,24478,23659" scanType="progressive" streamIdentifier="256" width="1920" displayTitle="1080p (H.264)" extendedDisplayTitle="1080p (H.264)" />
<Stream id="615278" streamType="2" selected="1" codec="ac3" index="1" channels="6" bitrate="378" language="English" languageCode="eng" audioChannelLayout="5.1(side)" requiredBandwidths="379,379,379,379,379,379,379,379" samplingRate="48000" streamIdentifier="257" displayTitle="English (AC3 5.1)" extendedDisplayTitle="English (AC3 5.1)" />
<Stream id="615279" streamType="2" codec="ac3" index="2" channels="2" bitrate="192" language="Espa&#241;ol" languageCode="spa" audioChannelLayout="stereo" requiredBandwidths="192,192,192,192,192,192,192,192" samplingRate="48000" streamIdentifier="258" displayTitle="Espa&#241;ol (AC3 Stereo)" extendedDisplayTitle="Espa&#241;ol (AC3 Stereo)" />
<Stream id="615277" streamType="3" codec="eia_608" index="0" bitrate="20327" embeddedInVideo="1" requiredBandwidths="60773,54785,40473,34979,33027,31139,24478,23659" streamIdentifier="256" displayTitle="Unknown (Closed Captions)" extendedDisplayTitle="Unknown (Closed Captions)" />
</Part>
</Media>
<Genre id="105800" filter="genre=105800" tag="Sport" />
<Genre id="105014" filter="genre=105014" tag="Football" />
<Genre id="105801" filter="genre=105801" tag="College" />
<Genre id="105802" filter="genre=105802" tag="Regular Season" />
<Genre id="98478" filter="genre=98478" tag="Sports event" />
<Team id="105803" filter="team=105803" tag="South Florida Bulls" />
<Team id="105804" filter="team=105804" tag="Notre Dame Fighting Irish" />
<Channel id="105344" filter="channel=105344" tag="550 USAHD (USA Network HDTV (East))" />
<Marker type="commercial" startTimeOffset="0" endTimeOffset="256720" />
<Marker type="commercial" startTimeOffset="940770" endTimeOffset="1031600" />
<Marker type="commercial" startTimeOffset="1263560" endTimeOffset="1418620" />
<Marker type="commercial" startTimeOffset="1711810" endTimeOffset="1847410" />
<Marker type="commercial" startTimeOffset="2208240" endTimeOffset="2313250" />
<Marker type="commercial" startTimeOffset="2787950" endTimeOffset="2923660" />
<Marker type="commercial" startTimeOffset="3621960" endTimeOffset="3757020" />
<Marker type="commercial" startTimeOffset="3991260" endTimeOffset="4127060" />
<Marker type="commercial" startTimeOffset="4580710" endTimeOffset="4686420" />
<Marker type="commercial" startTimeOffset="4914510" endTimeOffset="5004500" />
<Marker type="commercial" startTimeOffset="7314510" endTimeOffset="7405270" />
<Marker type="commercial" startTimeOffset="7616180" endTimeOffset="7751220" />
<Marker type="commercial" startTimeOffset="8235540" endTimeOffset="8370570" />
<Marker type="commercial" startTimeOffset="8761800" endTimeOffset="8896830" />
<Marker type="commercial" startTimeOffset="9405640" endTimeOffset="9541270" />
<Marker type="commercial" startTimeOffset="9878650" endTimeOffset="9983650" />
<Marker type="commercial" startTimeOffset="10279510" endTimeOffset="10399530" />
<Marker type="commercial" startTimeOffset="10605940" endTimeOffset="10725960" />
<Marker type="commercial" startTimeOffset="11165600" endTimeOffset="11303540" />
<Marker type="commercial" startTimeOffset="12316920" endTimeOffset="12376980" />
<Marker type="commercial" startTimeOffset="12522090" endTimeOffset="12596500" />
<Extras size="0">
</Extras>
<Related>
</Related>
</Video>
</MediaContainer>

and this one was recorded with a third party app, which supports more tuners than Plex does:

<?xml version="1.0" encoding="UTF-8"?>
<MediaContainer size="1" allowSync="1" identifier="com.plexapp.plugins.library" librarySectionID="19" librarySectionTitle="TV Shows" librarySectionUUID="4e3dd448-35a8-4f8a-9d24-f000e8cf9099" mediaTagPrefix="/system/bundle/media/flags/" mediaTagVersion="1601657084">
<Video ratingKey="340630" key="/library/metadata/340630" parentRatingKey="340527" grandparentRatingKey="340526" guid="com.plexapp.agents.bmtagenttvshows://340526/2020/102?lang=en" parentGuid="com.plexapp.agents.bmtagenttvshows://340526/2020?lang=en" grandparentGuid="com.plexapp.agents.bmtagenttvshows://340526?lang=en" type="episode" title="Favourite Thing; Daddy Dropoff; Sleepytime" grandparentKey="/library/metadata/340526" parentKey="/library/metadata/340527" librarySectionTitle="TV Shows" librarySectionID="19" librarySectionKey="/library/sections/19" grandparentTitle="Bluey" parentTitle="Season 2020" contentRating="TV-Y" summary="The adventures of a Blue Heeler puppy, Bluey, who lives with her mother, father and sister; her energy and lovable spirit gets her into all kinds of funny and unpredictable situations." index="102" parentIndex="2020" viewOffset="1572537" viewCount="9" lastViewedAt="1602620520" year="2020" thumb="/library/metadata/340630/thumb/1602586908" art="/library/metadata/340526/art/1602586909" parentThumb="/library/metadata/340527/thumb/1602586909" grandparentThumb="/library/metadata/340526/thumb/1602586909" grandparentArt="/library/metadata/340526/art/1602586909" duration="1798874" originallyAvailableAt="2020-10-09" addedAt="1602279077" updatedAt="1602586908">
<Media id="329045" duration="1798874" bitrate="10613" width="1280" height="720" aspectRatio="1.78" audioChannels="6" audioCodec="ac3" videoCodec="mpeg2video" videoResolution="720" container="mpegts" videoFrameRate="60p" videoProfile="main">
<Part accessible="1" exists="1" id="335305" key="/library/parts/335305/1602280800/file.ts" duration="1798874" file="E:\SageTV\Bluey - 36703333-0.ts" size="2386373224" container="mpegts" deepAnalysisVersion="4" indexes="sd" packetLength="188" requiredBandwidths="11739,11289,10903,10700,10540,10484,10484,10484" videoProfile="main">
<Stream id="619907" streamType="1" codec="mpeg2video" index="0" bitrate="10037" bitDepth="8" chromaLocation="left" chromaSubsampling="4:2:0" closedCaptions="1" codedHeight="720" codedWidth="1280" colorRange="tv" frameRate="59.940" height="720" level="4" profile="main" refFrames="1" requiredBandwidths="11162,10712,10327,10123,10105,10105,10105,10105" scanType="progressive" streamIdentifier="256" width="1280" displayTitle="720p (MPEG2VIDEO)" extendedDisplayTitle="720p (MPEG2VIDEO)" />
<Stream id="619909" streamType="2" selected="1" codec="ac3" index="1" channels="6" bitrate="384" language="English" languageCode="eng" audioChannelLayout="5.1(side)" requiredBandwidths="384,384,384,384,384,384,384,384" samplingRate="48000" streamIdentifier="257" displayTitle="English (AC3 5.1)" extendedDisplayTitle="English (AC3 5.1)" />
<Stream id="619910" streamType="2" codec="ac3" index="2" channels="2" bitrate="192" language="Espa&#241;ol" languageCode="spa" audioChannelLayout="stereo" requiredBandwidths="192,192,192,192,192,192,192,192" samplingRate="48000" streamIdentifier="258" displayTitle="Espa&#241;ol (AC3 Stereo)" extendedDisplayTitle="Espa&#241;ol (AC3 Stereo)" />
<Stream id="619908" streamType="3" codec="eia_608" index="0" embeddedInVideo="1" requiredBandwidths="11162,10712,10327,10123,10105,10105,10105,10105" streamIdentifier="256" displayTitle="Unknown (Closed Captions)" extendedDisplayTitle="Unknown (Closed Captions)" />
</Part>
</Media>
<Extras size="0">
</Extras>
<Related>
</Related>
</Video>
</MediaContainer>

I’m in the same boat, I use NextPVR due to the advanced functionality, including manual search parameters. I’ve run into the same problems as you. I discussed this situation in another thread:

Worth noting that @DaveBinM kindly offered to look into this as time allows (thanks Dave!). Since all the recordings are transport streams, just like Plex uses, I’m hopeful this functionality will get added eventually.

Yeah comskip itself supports those recordings just fine, FWIW. The other app I use supports it (and better than plex, it auto-skips the commercials and even marks them on the timeline), so when plex adds them to the library, they usually already have comskip ready on them - but Plex won’t recognize the comskip files, and when I tried turning it off, Plex wouldn’t run comskip on them when they were added to the library either. For that software, the player simply checks for commercial data when the media is played and gives you the option accordingly… that’s how Plex should work!

1 Like

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.