Jump to content

ComSkipper ... A Emby Plugin that skips commercials


BillOatman

Recommended Posts

Hey all, quick question. What tag does comskipper look for to identify a commercial? I've asked folks at MCEBuddy to add markers at the beginning and end of the commercial, and they're asking for what tag to use. Should the tag be "advertisement", "ad", something else? 

And, comskipper can look for tags/markers within the file right? The EDL file is just an option?

Link to comment
Share on other sites

BillOatman
16 minutes ago, MBSki said:

Hey all, quick question. What tag does comskipper look for to identify a commercial? I've asked folks at MCEBuddy to add markers at the beginning and end of the commercial, and they're asking for what tag to use. Should the tag be "advertisement", "ad", something else? 

And, comskipper can look for tags/markers within the file right? The EDL file is just an option?

Comskipper uses a standard EDL file generated by comskip. No other options.

Edited by BillOatman
Link to comment
Share on other sites

30 minutes ago, BillOatman said:

Comskipper uses a standard EDL file generated by comskip. No other options.

Got it, thanks. How are the commercials identified in the EDL? Are they tagged somehow?

Link to comment
Share on other sites

Spaceboy
2 hours ago, MBSki said:

Got it, thanks. How are the commercials identified in the EDL? Are they tagged somehow?

time stamps to and from and a code telling the player what to do. 0 is skip. i think there are others for mute and other functions.

Link to comment
Share on other sites

53 minutes ago, Spaceboy said:

time stamps to and from and a code telling the player what to do. 0 is skip. i think there are others for mute and other functions.

Ok, so there's no specific tag telling comskipper that it's an ad vs the program?

Link to comment
Share on other sites

And would there be any way to update ComSkipper so it could skip specific "advertisement" blocks in a video file? PlayOn generated files automatically add an "Advertisement" tag (Example: https://1drv.ms/v/s!AoeIRL90LCrSr5suxb4p9TsWvaJLeg?e=qhq0rY). No EDL is needed, it's embedded in the file. Could ComSkipper see these tags and auto skip?

Link to comment
Share on other sites

Spaceboy
2 hours ago, MBSki said:

And would there be any way to update ComSkipper so it could skip specific "advertisement" blocks in a video file? PlayOn generated files automatically add an "Advertisement" tag (Example: https://1drv.ms/v/s!AoeIRL90LCrSr5suxb4p9TsWvaJLeg?e=qhq0rY). No EDL is needed, it's embedded in the file. Could ComSkipper see these tags and auto skip?

where/how are you seeing a tag in the file?

Link to comment
Share on other sites

BillOatman
2 hours ago, MBSki said:

And would there be any way to update ComSkipper so it could skip specific "advertisement" blocks in a video file? PlayOn generated files automatically add an "Advertisement" tag (Example: https://1drv.ms/v/s!AoeIRL90LCrSr5suxb4p9TsWvaJLeg?e=qhq0rY). No EDL is needed, it's embedded in the file. Could ComSkipper see these tags and auto skip?

I doubt plugins would see that unless they were chapters.  Either way I have no interest in it.  Someone could take the Comskipper source and create a different plugin if they wanted to.

 

Link to comment
Share on other sites

36 minutes ago, Spaceboy said:

where/how are you seeing a tag in the file?

If you play it in VLC you'll see the chapter marks. Hover over the chapter marks and the space in between the chapter marks for the ad and you'll see the word "advertisement". PlayOn can skip those automatically, and I think Plex can too, but I don't have Plex installed anymore to test.

Link to comment
Share on other sites

BillOatman
3 hours ago, MBSki said:

If you play it in VLC you'll see the chapter marks. Hover over the chapter marks and the space in between the chapter marks for the ad and you'll see the word "advertisement". PlayOn can skip those automatically, and I think Plex can too, but I don't have Plex installed anymore to test.

Yeah I figured chapters.  It would be possible to get a plugin to honor those.  In fact there is a plugin already that skips opening and closing credits that operates using chapters that could be modified to do what you want.

 

I'm a bit confused though.  What's the benefit of using MCEBuddy to create chapters versus running comskip directly to create a EDL file?

Edited by BillOatman
Link to comment
Share on other sites

41 minutes ago, BillOatman said:

Yeah I figured chapters.  It would be possible to get a plugin to honor those.  In fact there is a plugin already that skips opening and closing credits that operates using chapters that could be modified to do what you want.

Got it. I'll look for that forum and post the question there.

42 minutes ago, BillOatman said:

I'm a bit confused though.  What's the benefit of using MCEBuddy to create chapters versus running comskip directly to create a EDL file?

Because I already use MCEBuddy to move the files after recordings, and I'd rather just have the 1 file with info embedded.

Link to comment
Share on other sites

I'm in the process of switching from windows to linux arch .  I'm running the Reborn OS on a Rock 5 model b board.  I'm trying to set this up on that box.  I've installed everything.  However when running comskip through Emby post processing I get no edl file created even though it completes with exit code 0.  If I copy the line for post processing from the log and run  it as the emby user in console everything works can  this be maybe because I don't have the proper donate version of comskip?

Link to comment
Share on other sites

59 minutes ago, bwarthen said:

I'm in the process of switching from windows to linux arch .  I'm running the Reborn OS on a Rock 5 model b board.  I'm trying to set this up on that box.  I've installed everything.  However when running comskip through Emby post processing I get no edl file created even though it completes with exit code 0.  If I copy the line for post processing from the log and run  it as the emby user in console everything works can  this be maybe because I don't have the proper donate version of comskip?

Just found that I do have the Comskip 0.82.009, made using ffmpeg
Donator build

I've made emby the owner of every location that should need the permissions and if I run as emby it writes the edl file.

 

Link to comment
Share on other sites

2 minutes ago, bwarthen said:

Just found that I do have the Comskip 0.82.009, made using ffmpeg
Donator build

I've made emby the owner of every location that should need the permissions and if I run as emby it writes the edl file.

 

here is a snip from the logs

2023-04-21 12:01:04.490 Info LiveTV: Running recording post processor /usr/local/sbin/post-processing.sh "/var/lib/emby/data/livetv/recordings/Brooklyn Nine-Nine/Season 3/Brooklyn Nine-Nine S03E12 9 Days.ts"
2023-04-21 12:01:04.490 Info LiveTV: Triggering refresh on /var/lib/emby/data/livetv/recordings/Brooklyn Nine-Nine/Season 3/Brooklyn Nine-Nine S03E12 9 Days.ts
2023-04-21 12:01:05.003 Info VideoEncoder: ProcessRun 'Encoding dfeeeb': WaitForExitAsync failed. Killing ffmpeg process.
2023-04-21 12:01:05.022 Info LiveTV: Refreshing recording parent /var/lib/emby/data/livetv/recordings/Brooklyn Nine-Nine/Season 3
2023-04-21 12:01:05.075 Info MediaProbeManager: ProcessRun 'ffprobe' Execute: /opt/emby-server/bin/ffprobe -i file:"/var/lib/emby/data/livetv/recordings/Brooklyn Nine-Nine/Season 3/Brooklyn Nine-Nine S03E12 9 Days.ts" -threads 0 -v info -print_format json -show_streams -show_chapters -show_format -show_data
2023-04-21 12:01:05.131 Info MediaProbeManager: ProcessRun 'ffprobe' Process exited with code 0 - Succeeded
2023-04-21 12:01:05.277 Info HttpClient: POST https://vip-api.opensubtitles.org/xml-rpc
2023-04-21 12:01:06.906 Info HttpClient: POST https://vip-api.opensubtitles.org/xml-rpc
2023-04-21 12:01:07.331 Info LiveTV: Recording post-processing script completed with exit code 0
Link to comment
Share on other sites

BillOatman
45 minutes ago, bwarthen said:

here is a snip from the logs

2023-04-21 12:01:04.490 Info LiveTV: Running recording post processor /usr/local/sbin/post-processing.sh "/var/lib/emby/data/livetv/recordings/Brooklyn Nine-Nine/Season 3/Brooklyn Nine-Nine S03E12 9 Days.ts"
2023-04-21 12:01:04.490 Info LiveTV: Triggering refresh on /var/lib/emby/data/livetv/recordings/Brooklyn Nine-Nine/Season 3/Brooklyn Nine-Nine S03E12 9 Days.ts
2023-04-21 12:01:05.003 Info VideoEncoder: ProcessRun 'Encoding dfeeeb': WaitForExitAsync failed. Killing ffmpeg process.
2023-04-21 12:01:05.022 Info LiveTV: Refreshing recording parent /var/lib/emby/data/livetv/recordings/Brooklyn Nine-Nine/Season 3
2023-04-21 12:01:05.075 Info MediaProbeManager: ProcessRun 'ffprobe' Execute: /opt/emby-server/bin/ffprobe -i file:"/var/lib/emby/data/livetv/recordings/Brooklyn Nine-Nine/Season 3/Brooklyn Nine-Nine S03E12 9 Days.ts" -threads 0 -v info -print_format json -show_streams -show_chapters -show_format -show_data
2023-04-21 12:01:05.131 Info MediaProbeManager: ProcessRun 'ffprobe' Process exited with code 0 - Succeeded
2023-04-21 12:01:05.277 Info HttpClient: POST https://vip-api.opensubtitles.org/xml-rpc
2023-04-21 12:01:06.906 Info HttpClient: POST https://vip-api.opensubtitles.org/xml-rpc
2023-04-21 12:01:07.331 Info LiveTV: Recording post-processing script completed with exit code 0

Sorry, you'll need a linux person to help out.  I avoid linux religiously ;)

Link to comment
Share on other sites

1 hour ago, bwarthen said:

/usr/local/sbin/post-processing.sh

Post the contents of this please.

Link to comment
Share on other sites

#!/bin/bash

# files and directory used in script :
# file saved in /usr/local/sbin/post-processing.sh
# sudo chmod +x /usr/local/sbin/post-processing.sh  -to make it executable
# comskip ini file /usr/local/sbin/comskip.ini or in media directory
# log file saved in /var/lib/emby/logs/media.txt

log_message()
{
        # Function. Parameter 1 message to log
        # Log available in emby
        # need a logrotate script to run once a day in cron job
echo $(date +"%Y-%m-%d%t%H:%M:%S") : ${1} >> /var/lib/emby/logs/media.txt
}


check_errs()
{
        # Function. Parameter 1 is the return code
        # Para. 2 is text to display on failure
        if [ "${1}" -ne "0" ]; then
           log_message "ERROR # ${1} : ${2}"
           exit ${1}
        fi
}

if [ ! -z "$1" ]; then
# The if selection statement proceeds to the script if $1 is not empty.
   if [ ! -f "$1" ]; then
      log_message "$1 does not exist"
      exit 0
   fi
   # The above if selection statement checks if the file exists before proceeding.

   FILENAME=$1  # %FILE% - Filename of original file


   DIRECTORY="$(dirname """$1""")"
   BASENAME="$(basename """$1""")"
   BASEDIR="$(dirname """$(dirname """$1""")""")"
   

if [[ "$DIRECTORY" == *"Season"* ]]; then
   BASEDIR="$(dirname """$(dirname """$1""")""")"
else
   BASEDIR="$(dirname """$1""")"
fi

   

   log_message "Starting preprocessing script $BASENAME"

   # Uncomment if you want to adjust the bandwidth for this thread
   MYPID=$$     # Process ID for current script
   # Adjust niceness of CPU priority for the current process
   renice 19 $MYPID

# wait a minute before starting comskip
sleep 65
if [ -f "$FILENAME" ]; then
 log_message "Start comskip of $BASENAME from $BASEDIR"
  

  edlfile="${FILENAME%.ts}.edl"
# a specific ini file can be used if found in media folder - if not /usr/local/sbin/comskip.ini is default
# use $DIRECTORY or $BASEDIR to build path depending where you put comskipini and logofile in season or in show folder
  comskipini="$DIRECTORY/comskip.ini"
  logfile="${FILENAME%.ts}.log"
  logofile="$DIRECTORY/logo.txt"
  newlogofile="${FILENAME%.ts}.logo.txt"
  txtfile="${FILENAME%.ts}.txt"

 #build command line 
 #if comskipini exist in file directory use it else use default comskipini
 #use logo file if exist in file directory
  if [ -f "$comskipini" ]; then
 #    echo use local ini
       if [ -f "$logofile" ]; then
          log_message "got a local ini and logo file "
          /usr/bin/comskip --ini="$comskipini" --logo="$logofile" "$FILENAME"
       else
          log_message "got a local ini file only"
          /usr/bin/comskip --ini="$comskipini" "$FILENAME"        
       fi
    else
 #   echo use default ini
      if [ -f "$logofile" ]; then
      log_message "use default ini and local logo"
      /usr/bin/comskip --ini="/usr/local/sbin/comskip.ini" --logo="$logofile" "$FILENAME"
    else
      log_message "use default ini and no logofile"
      /usr/bin/comskip --ini="/usr/local/sbin/comskip.ini" "$FILENAME"
    fi
  fi
 

  if [ -f "$logfile" ]; then
    rm "$logfile";
    log_message "delete log file"
  fi

  #move logo file to be use on same show next time
  if [ -f "$newlogofile" ]; then
    mv "$newlogofile" "$logofile"
    log_message "moved logo file to $logofile"
    else
    log_message "no logo file to move"
  fi


  if [ -f "$txtfile" ]; then
    rm "$txtfile";
    log_message "delete txt file"
  fi
  
fi

  
  log_message "Finished prepostprocessing script $BASENAME"

else
   log_message "********************************************************"
   log_message "Usage: $0 FileName"
   log_message "********************************************************"
fi

Link to comment
Share on other sites

Script looks fine tome so it's probably that the comskip version you are running was compiled with an incompatible version of ffmpeg than the version of emby you are running (this has come up before in this verrry long thread).
Try putting:
unset LD_LIBRARY_PATH
before you run comskip since your not using ffmpeg later there is no need to save and restore it (LD_LIBRARY_PATH) afterwards.

  • Agree 1
Link to comment
Share on other sites

BillOatman

New Comskipper release. Links etc. in first post.

Version 2.0.0.0 - Allows for chapters to identify commercial points if they exist.  PlayOn and perhaps others identify commercials that way.

  • Like 2
  • Thanks 1
Link to comment
Share on other sites

On 4/21/2023 at 2:52 PM, TMCsw said:

Script looks fine tome so it's probably that the comskip version you are running was compiled with an incompatible version of ffmpeg than the version of emby you are running (this has come up before in this verrry long thread).
Try putting:
unset LD_LIBRARY_PATH
before you run comskip since your not using ffmpeg later there is no need to save and restore it (LD_LIBRARY_PATH) afterwards.

This seems to have worked for me.  Thank you for the help.

 

Link to comment
Share on other sites

  • 2 weeks later...
daldana

Hi all,

I've just installed this plugin and followed the instructions in the pdf completely (also, I am using the donators version). I recorded the Derby race today and an edl file was created in the recordings folder, but when I watched it, no commercials were skipped. The edl file had 30 breaks logged (it was a long broadcast) and they were in the correct format. When I look at the debug log, it shows these three lines;

2023-05-06 16:59:51.696 Debug Com Skipper: Media File: \\MAIN-HTPC\E\Recorded TV\149th Kentucky Derby\149th Kentucky Derby 2023_05_06_11_30_00.ts EDL file \\MAIN-HTPC\E\Recorded TV\149th Kentucky Derby\149th Kentucky Derby 2023_05_06_11_30_00.edl

2023-05-06 16:59:51.713 Debug Com Skipper: Comskip EDL file [\\MAIN-HTPC\E\Recorded TV\149th Kentucky Derby\149th Kentucky Derby 2023_05_06_11_30_00.edl] does not exist.

2023-05-06 16:59:51.713 Debug Com Skipper: No usable EDL file found. Looking for chapter commercial points.

This is on a Windows 11 machine running 4.7.11.0, any ideas why the plugin is not seeing the edl file? Thanks.

Link to comment
Share on other sites

BillOatman
3 hours ago, daldana said:

Hi all,

I've just installed this plugin and followed the instructions in the pdf completely (also, I am using the donators version). I recorded the Derby race today and an edl file was created in the recordings folder, but when I watched it, no commercials were skipped. The edl file had 30 breaks logged (it was a long broadcast) and they were in the correct format. When I look at the debug log, it shows these three lines;

2023-05-06 16:59:51.696 Debug Com Skipper: Media File: \\MAIN-HTPC\E\Recorded TV\149th Kentucky Derby\149th Kentucky Derby 2023_05_06_11_30_00.ts EDL file \\MAIN-HTPC\E\Recorded TV\149th Kentucky Derby\149th Kentucky Derby 2023_05_06_11_30_00.edl

2023-05-06 16:59:51.713 Debug Com Skipper: Comskip EDL file [\\MAIN-HTPC\E\Recorded TV\149th Kentucky Derby\149th Kentucky Derby 2023_05_06_11_30_00.edl] does not exist.

2023-05-06 16:59:51.713 Debug Com Skipper: No usable EDL file found. Looking for chapter commercial points.

This is on a Windows 11 machine running 4.7.11.0, any ideas why the plugin is not seeing the edl file? Thanks.

Comskipper could not open the edl file.  Assuming the edl file exists, and is named 149th Kentucky Derby 2023_05_06_11_30_00.edl, then it must be having trouble opening the file on your networked drive.  I never tried it that way. Could be a lot of reasons why such as permissions, but like I said, I never tried a networked drive.

Link to comment
Share on other sites

daldana

Thank you sir, that was it! I had upgraded my server and that networked drive was a remnant left over from the move and I didn't notice it. Once I removed that drive and re-added just the local drive, the plugin worked perfectly.

Link to comment
Share on other sites

Comskip Segmentation Fault error on Linux Mint 21

I just rebuilt my Emby server (new hardware and all) and ran into a problem with comskip on a fresh install of Linux Mint 21.  It randomly exits with a Segmentation fault error.  System log shows a general protection fault libc.so.6.  Googling lots of stuff and have found a few others encountering the same issue, but so far no headway resolving the problem.  If anyone else has seen this and resolved it, I'd appreciate hearing how you did it.  

As a work around I have found that if I run comskip a second time right away against the same video file it completes normally.  At least it hasn't failed yet.  I've modified a script posted previously by @Skitals to automatically run comskip a second time if the first attempt errors out.  Good for now, but looking for a real answer.

 

Edited by richt
Link to comment
Share on other sites

Try one of the following:

  1. ***  set two_pass_logo=0 in your comskip.ini (I find this setting makes little difference anyway)
  2. run comskip twice (as you have found)
  3. get an older version of comskip
  4. maintain and specify a xxx.logo.txt for each channel
  5. Wait for a fix.
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...