Commercial Detection for In-Process Recordings (Catch-up to live broadcast - especially useful for live sports/events)

The feature that I miss most about my previous DVR (SageTV) is that it had the option to run commercial detection while the show as being recorded. This feature is specifically useful when watching live sports or other live events. If you start watching late, or if you pause while watching, you can still see the entire game and also gradually catch up to the live broadcast as each commercial break is automatically detected and skipped. I really enjoyed starting games about 30 minutes late, automatically skipping past all the commercials, and being caught-up to the live broadcast before the end.

From a technical standpoint, this feature shouldn't be the most difficult implementation, since the Commercial Detection feature is already in place. Instead of running comskip only at the completion of a recording, comskip would run as a scheduled task every 5 or so minutes on the active recording. The .edl file would have to be periodically reloaded by the player to incorporate recently-detected commercials.

The only potential downside would be playback stutters from the comskip process on low-powered servers. I never encountered this issue with my 10-year-old Windows server and SageTV (which also uses comskip), but it could potentially be an issue on some servers. This can be mitigated by running comskip with the "--playnice" option to slow down detection and limit CPU/disk utilization.

This is the DVR feature I miss most, and I hope someday Channels DVR adds this capability.

Actually, Comskip can work with a live stream. The problem is that its accuracy is not nearly as good with live streams as it is with a completed recording, because comskip makes multiple passes on a recorded file to augment its heuristics.

Also, if this were to be run on multiple in-progress recordings, that could easily tax the processor, especially on underpowered devices.

While this is technically possible—and much easier to achieve for in-progress recordings rather than live streams, which is a totally different beast—I feel it still misses the mark WRT UX. However, that's merely my opinion, and the restriction to in-progress recordings makes such a feature more feasible.

I think the value of this feature to a user depends entirely on how often a person watches live events. It's preferable to be caught-up by the end to prevent the result from being ruined. For a user who doesn't watch live events, the feature has much less value. I still find myself switching back to my old DVR to watch live sports, despite its other limitations, because of this feature.

Commercial detection for live streams would definitely be the ultimate version of this capability, but I agree with you that it's probably too ambitious. In-process recordings is probably the more realistic target, from both a technical and a usefulness standpoint.

As I recall, SageTV only runs in-process comskip for 1 recording at a time. So if 2 shows start recording at the same exact time, only 1 of them will get in-process commercial detection. I would schedule my "favorite team" recordings 1 minute earlier to make sure it received the in-process commercial removal.

I used SageTV since 2006 before very recently switching to Channels DVR. I, too, miss this functionality. Added a vote for dev consideration.

1 Like

I noticed there is already a setting for Thread Count for Commercial Detection, with a default setting of 1. So it appears there is already a setting to control the amount of load Commercial Detection places on the server. So the potential concern regarding too high CPU utilization may already be addressed.

Forgive me for not fully vetting this, but I do remember that comskip.ini allows for making the change to run on currently recording programs. I do not how this works in Channels and I am also assuming that it is running stock comskip. All that said, if you can find the comskip.ini, make the change here:

live_tv=0 ; set to 1 if you use parallelprocessing and need the output while recording

Curious if you try it and if it works with just making that change.

It will not work as Channels DVR kicks off comskip at completion of recording not start.

Now that it's football season, I'm really wishing I had this feature. Lots of manual commercial skipping to try to get caught-up when starting a game late.

Slightly different topic related to the DVR function.

When manually advancing through a recording I find that if I click the 30 sec step advance button a few times (1-5) it skips almost immediately. But if I click it 8 times or more (4 minutes or more) it becomes very slow to respond. In this case if I get tired of waiting and click Stop, then it will ’wake up’ and complete the complete advance move.

This is probably because the client has already received the next ~4 minutes of the recording and is holding it in its buffer. When you seek further in the recording, your client device must wait for the DVR to send the requested portions of the recording to your device. This lag will be even more noticeable when you are on Wi-Fi, as it has a much higher latency than a wired connection.

1 Like