Comskip

From ARGUS TV Wiki
Jump to: navigation, search

Contents

About

Comskip is a free video commercial detector. It is a windows console application that reads a video file and analyses the content based on a large amount of configurable parameters. After analysis it generates a file in various possible formats containing the location of the commercials inside the video file.
Comskip can read MPEG and h.264 video, MPEG2, AC3 and AAC audio from PS , TS and dvr-ms files upto HD resolution (max 2000x1200) at 25fps (PAL) and 29.97fps (NTSC).
Comskip can NOT read copy protected recordings.
The h.264 (HD) and WTV version just recently also got publicly available.

To experience the effect of Comskip, you need a Client (front-end; player) that supports skipping of commercials.
Front-ends, known to support commercial skipping:

  • MediaPortal
  • XBMC

Front-ends, known NOT to support commercial skipping:

  • Windows Media Player
  • Windows Media Center

Comskip has a companion application called "Comclean" that can permanently remove the commercials from recordings. This is useful if you wish to keep recordings as it reduces file sizes. Comskip also supports the MPEG cutters mpgtx, cuttermaran, and mencoder. Cutting recordings usually means a (automatic, but not lossless) decode, cutting, and then re-encode of the video file.

ICN WARN.PNG Important
ARGUS TV only calls Comskip to process a recording, after that it is up to Comskip to use the settings you have provided it, and your client software to use the created marker file info to skip the adverts.


Versions & Download

Generally there are two main versions of Comskip (although it's over all officially still a 0.x version - a beta).
The basic version, and the Donator version.
At the time of writing the public and donator's version are the same and the public version is now capable of processing h.264 (HD) and supports latest analyzing features (of logos, ratio change, etc.) amongst some other things.

ICN WEB.PNG

Web Site & Download


Installing & Configuring Comskip

Comskip is supplied as a .zip file, installing it is as simple as unzipping it and placing it to the location of your choice.
The included settings ("comskip.ini") is suitable for many users already and applies "moderate severe commercial detection".
Three very profound guides, absolutely worth to be read, are available from Comskip Website under ICN WEB INLINE.PNG http://www.kaashoek.com/comskip.

ICN INFO.PNG Information
All examples and references in this article will assume that "comskip.exe" is located in "C:\Program Files\Comskip\comskip.exe".
If this is not the case, use your chosen location instead. eg. "C:\Program Files (x86)\comskip81_049_donators\comskip.exe"


Configuring Comskip basically means editing "comskip.ini" - carefully read the included "manual.html" and make a backup before editing. To tweak the configuration may be quite complex and may lead to side-effects, thus, it is recommended to tweak settings step by step and looking at the results for a certain time. During this time, you should not enable cutters or Comclean as the result may be - depending on your settings - irreversible.
The result is strongly depending on your providers and channels, it's quite strongly depending on "broadcast policies" of the individual providers: some show their logos for some more seconds, some move it to a different location showing a kind of PIP ad, some do change aspect ratio, some not, etc.
In addition, of course, it strongly depends on your own preferences.
The default comskip.ini tries to avoid "too early and rigid" cuts, but nevertheless cuts "within 30 seconds" (personal experience); you might want to make this more "severe"...
Thus we recommend that you, if you're not sure what to change, contact users within your region through the ICN WEB INLINE.PNG Comskip Forum to ask for specific assistance.


The author of this article made pretty good experience by changing the default ini settings to the following more severe through change of these parameters:

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_before_or_after_current=1; 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
after_logo=1; set to number of seconds after logo disappears comskip should start to search for silence to insert an additional cutpoint
before_logo=1; set to number of seconds after logo appears comskip should start to search for silence to insert an additional cutpoint
; some further optimization - not related to commercial detection
delete_logo_file=1; set to 1 if you want comskip to tidy up after finishing
output_edl=0; 0=no edl file output, 1=edl file creation; edl file for XBMC not needed
verbose=0;show a lot of extra info, level 5 is also OK, set to 0 to disable


Using & Calling Comskip

Comskip policies
There are three basic policies of using comskip - depending on your own preferences and your infrastructure.

  1. Comskip processing after each recording ended (designed for and recommended)
  2. Comskip Batch Processing while your system is less loaded or idle (reducing resource load)
  3. Comskip Real-time Processing - watch the ad-less result while being broadcasted

Comskip Processing after each Recording ended

ICN WARN.PNG Important
Running Comskip while watching TV or recordings could adversely affect the user experience. In this case, you may need to run ICN WIKI INLINE.PNG Comskip On-Idle or Batch Processing at a low/no use time.

To have ARGUS TV call Comskip, we use ARGUS TV Scheduler Console Processing Commands.

First we need to create the command. Start by opening the ARGUS TV Scheduler Console and going to Processing Commands.

  • Create a new command and give the it a name that will easily identify it later.
  • Set the path to "C:\Program Files\Comskip\comskip.exe" (adopt to your individual setup or use a *.cmd/*.bat file you created).
  • Set when the command should run.
  • Set whether this command should apply to all new schedules.
  • Save the command.
  • Apply this post-processing entry to any schedules you already defined, that should be processed.

Be aware, that this means an additional load to your machine after each recording (and potentially parallel to other recordings). From our experience, this load is considerable low, but you should watch your (other) recordings if you're running your machines "near the limits".
Comskip as a processing command is running invisibly, no CMD window will appear on your screen. The processing time per recording takes, depending on length and resolution of your recording, approx. 1-5 minutes, even on weaker systems.

Comskip On-Idle or Batch Processing

You may want to decide, that your Comskip application runs as a kind of batch process, compiling all the non-scanned recordings (yet) at a time when your system is idle or at a specific time.
This is especially recommended, if your system tends to be "fully loaded" and you encounter already from time to time broken records. It means, of course, that the Comskip information for your front-end or client is only provided some other time, means: later than "some minutes after the recording".

There are basically two ways to get this done:

  1. Defining a ARGUS TV Processing Command that only starts at a specific time
  2. Creating cmd files that are called from your task manager

Ad 1.
Advantage: no cmd window is shown, it runs "silent"
Disadvantages: first, as Comskip (especially in the older (non-donator) versions sometimes tends to fail or even crash (as the time of writing this article), you'll not know about this. Second, it is not known to the author, if these process commands are run in parallel when having recorded multiple shows. Which would turn the partial instability of Comskip even much worse. Third, this is not a real idle processing. It runs at a time that you assume the system to be idle.

Ad 2.
Advantages: you visually can trace the procedure of Comskip. Task manager gives you a large flexibility and a real idle time processing is possible through the task parameters. The process can be starting at a certain time (as above) but then wait until the system turns idle and then start the process. In addition, you can delay, repeat, and last but not least also manually evoke the process. As this way reflects a real batch processing, Comskip is run only sequentially file per file (but of course in the same process/cmd window). In addition, you may simply add the process to your maybe already existing maintenance routine.
Disadvantage: you see a focused cmd box showing up. Nevertheless there are certain free tools available to avoid / suppress this.

If you want to follow the first way, please proceed to ICN WIKI INLINE.PNG Activating Comskip from within ARGUS TV schedules and select the When-Parameter of your created processing command accordingly.
If you want to follow the latter way, please read on.


Creating the Batch Cmd Files
The easiest way to get this batch processing running, is to create two *cmd / *.bat files to

  1. Determine, which video files have not yet been comskip'ped
  2. Call the "Create-Comskip" bat / cmd file for each file that has not been processed so far
  3. Call the determination (the core cmd file) from within your task scheduler according to your desires

The master/core cmd file could look like

@echo off

REM The core cmd file, called from your task manager.
REM it calls the slave cmd for each *.ts file it finds REM search for all *.ts files and run check with it (cmd) if a corresponding *.txt file exists (with or w/o. subdirs)

FORFILES /m *.ts /s /c "cmd /c Slave-Cmd-File.cmd @fname"

The called (slave) cmd/bat file that the above core refers to, could look like

@echo off

REM The slave cmd file - called for every *.ts file the FORFILES command in core cmd file finds.
REM It checks for the existance of a corresponding *.txt file.

REM You may have to adopt to *.edl, if you're using that output
REM Calls Comskip, if not existent
IF EXIST %1.txt GOTO FOUND_TXT_FOR_TS
GOTO NOT_FOUND_TXT_FOR_TS

:FOUND_TXT_FOR_TS
REM *************************************************
REM *.txt file found - no action required
REM You can add your own action here

GOTO END

:NOT_FOUND_TXT_FOR_TS
REM *************************************************
REM NO TXT Files are found to corresponding *.ts file -> RUN Comskip

comskip %1.ts
GOTO END

:END
REM *************************************************
REM echo end of subjob.


ICN INFO.PNG If you decide to solely use the above described batch processing through cmd files, you need not change anything within ARGUS TV Scheduler Console - you're already done. No Processing Command or further setting has to be created for that case.

You might just want to read below section on how to ICN WIKI INLINE.PNG [[#Cleanup of left-over files from Comskip & ARGUS TV|cleanup your directories from left-over files of Comskip & ARGUS TV]


Comskip Real-time & Live TV Processing

ICN WARN.PNG Important
Running Comskip while watching TV or recordings could adversely affect the user experience. In this case, you may need to run ICN WIKI INLINE.PNG Comskip On-Idle or Batch Processing at at a low/no use time.


With the proper settings, it is possible to run Comskip as a parallel process when the recording starts and have data available almost immediately, this means that you will be able to start watching the recording before it has finished and still skip the Commercial breaks (provided you don't catch up to the live point).
However, results may vary. Many people find Comskip to be unstable when running it "live".


The following parameters influence the live TV behavior, you usually only have to set "live_tv" to 1 to get it properly working together with ARGUS TV:

live_tv=0; set to 1 if you use parallel processing 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

Don't forget: If you're running the real-time processing, you also need to "tell" this to your schedules:
Open ARGUS TV Scheduler Console, and select Processing Commands. Set the "When"-Parameter of the intended real-time processing command to "Run when the recording starts (live)".


Activating Comskip from within ARGUS TV Schedules

This section covers the following items:

  1. Creation of ARGUS TV Comskip processing command
  2. Activation of Comskip processing for existing individual recordings


ICN INFO.PNG If you decide to solely use the above described batch processing through cmd files, you need not change anything within ARGUS TV Scheduler Console - you're already done. No Processing Command has to be created for that case.

You might just want to read below section on how to ICN WIKI INLINE.PNG [[#Cleanup of left-over files from Comskip & ARGUS TV|cleanup your directories from left-over files of Comskip & ARGUS TV]


Creation of ARGUS TV Comskip Processing Command

  • Enter the ARGUS TV Scheduler Console and select Processing Commands
  • Hit the button Create to the top right.
  • Make sure, the newly created entry in the list box now called "-Unnamed-" is highlighted and then edit in the below part of the window the settings:
    • Choose your desired name
    • Set the full path to your comskip.exe including comskip.exe itself, e.g. C:\Program Files\Comskip\comskip.exe
    • As "Arguments" enter %%FILE%%
    • Decide when you want Comskip to be run - depending on your usage as described in the sections above. Note: if you choose "Run when the recording starts (live)", please don't forget to also activate real-time processing of Comskip as described.
    • Decide if you want to assign the Comskip processing command to all new (video) recordings and activate the checkbox Automatically assign to all new television schedules if so.


ICN INFO.PNG Information:
  • If you already have other processing commands defined as automatically assign to all new television schedules, you may safely activate it for this one, too. ARGUS TV can handle more than just one processing command for each recording.
  • Already existing schedules are not automatically updated. They must be individually edited and the Comskip processing command has to be added to each of the desired recordings as described in the next section.
  • You can set up several processing commands and apply them to schedules depending on your watching habits. For example, you could have commands called "Comskip, Record end" and "Comskip, 2am". Then, for example, manually apply the first to the schedule that records the News and the second to all other recordings.


Activation of Comskip Processing for existing individual Recordings

Adding Comskip processing to existing (or newly created, if not set to be activated for all future recordings) schedules is considerably easy:

  • Open the Recordings page within ARGUS TV Scheduler Console
  • Choose a schedule to add Comskip processing to, and click the "Edit" button
  • In the "Processing" field, select the newly created Comskip processing command
  • Save the schedule
  • Repeat this procedure for every schedule you want to run (one of) your Comskip command(s) with


Client-specific Behaviour

MediaPortal

Mediaportal can use Comskip data when playing recorded TV, but only through the TV section (not Videos etc.) To make it work, you must check the "Use Comskip Data" checkbox in the TV section of MediaPortal Configuration. After that, it should just work.

XBMC

XBMC fully supports comskip'ped files. It requires (only) the default created text files (*.txt) with the same root file name and in the same directory as the recorded show. EDL file creation may safely be deactivated.
Since XBMC 12.0 Frodo, the jump table is pre-read and a seamless jump is guaranteed. The actual result, however, is of course depending on the generated Comskip file (*.txt) and thus on your settings & your provider.


Cleanup of left-over files from Comskip & ARGUS TV

Depending on your settings of ARGUS TV (creating potentially *.thmb and *.arg files), you already have some "left-overs" after deleting a show from within your client.
Using Comskip definitively creates additional files, that will remain in your directories after a show has been deleted through your front-end (they usually delete the video file only). You will at least have remaining *.txt files but also other outputs - depending on your settings - like *.logo.txt, *.edl, and maybe even many others.
A small helper may clean up your directories (and sub-directories) from these files. You may run them from within your maintenance task or even combine them with the batch processing described above, if you decided to use it.
The simple cmd files "CleanDirectory" may help you: find them under ICN WEB INLINE.PNG [http://21x.eu/downloads/CleanDirectory.html] Argus "Argus-TV" ArgusTV ATV "A-TV" ForTheRecord 4TR "For The Record" Scheduler Recorder Console Comskip download installation setup "set-up" commercial skipping cut

Namespaces

Variants
Actions
Navigation
Toolbox