EDL/ComSkip discussion

Kodi Community Development

Moderator: TVJunkie198

Deihmos
Posts: 66
Joined: Sun Jul 08, 2012 9:25 pm

Re: EDL/ComSkip discussion

Post by Deihmos »

I have this working really well in Kodi 18.6 on the Nvidia shield. My only problem is that I cannot skip chapters by pressing up on the remote. it instead jumps 10 minutes. I have to use the OSD instead if I need to jump back or forward.

Online
NedS
Silicondust
Posts: 1705
Joined: Mon Dec 10, 2018 12:38 pm
x 77

Re: EDL/ComSkip discussion

Post by NedS »

Deihmos wrote: Sun May 03, 2020 2:39 pm I have this working really well in Kodi 18.6 on the Nvidia shield. My only problem is that I cannot skip chapters by pressing up on the remote. it instead jumps 10 minutes. I have to use the OSD instead if I need to jump back or forward.
EDLs in Kodi are weird in that Kodi has a different remote control action ID for them. It's "NextScene/PreviousScene" for the command, and you can use the keymap add-on to change up/down to those actions for "Fullscreen video".

Deihmos
Posts: 66
Joined: Sun Jul 08, 2012 9:25 pm

Re: EDL/ComSkip discussion

Post by Deihmos »

NedS wrote: Mon May 04, 2020 12:34 am
Deihmos wrote: Sun May 03, 2020 2:39 pm I have this working really well in Kodi 18.6 on the Nvidia shield. My only problem is that I cannot skip chapters by pressing up on the remote. it instead jumps 10 minutes. I have to use the OSD instead if I need to jump back or forward.
EDLs in Kodi are weird in that Kodi has a different remote control action ID for them. It's "NextScene/PreviousScene" for the command, and you can use the keymap add-on to change up/down to those actions for "Fullscreen video".
Thanks this did the trick. If the video has no chapters it would jump 10 minutes. That no longer works but I can live without it.

Online
NedS
Silicondust
Posts: 1705
Joined: Mon Dec 10, 2018 12:38 pm
x 77

Re: EDL/ComSkip discussion

Post by NedS »

Deihmos wrote: Mon May 04, 2020 8:43 am
NedS wrote: Mon May 04, 2020 12:34 am
Deihmos wrote: Sun May 03, 2020 2:39 pm I have this working really well in Kodi 18.6 on the Nvidia shield. My only problem is that I cannot skip chapters by pressing up on the remote. it instead jumps 10 minutes. I have to use the OSD instead if I need to jump back or forward.
EDLs in Kodi are weird in that Kodi has a different remote control action ID for them. It's "NextScene/PreviousScene" for the command, and you can use the keymap add-on to change up/down to those actions for "Fullscreen video".
Thanks this did the trick. If the video has no chapters it would jump 10 minutes. That no longer works but I can live without it.
I don't think the keymap add-on can do this, but if you edit the keymap .xml file directly it's possible to put in a long-press action and a short-press action. The Kodi wiki should have the details.

Deihmos
Posts: 66
Joined: Sun Jul 08, 2012 9:25 pm

Re: EDL/ComSkip discussion

Post by Deihmos »

Is there a way to get this working on Linux? I had to switch to Windows to get it going because I couldn't find a way to launch comskip on linux. it would be great if the Hdhomerun app had an option to launch comskip or a script when a recording is triggered.

Ken.F
Posts: 2320
Joined: Fri Apr 05, 2013 9:20 am
Device ID: 1041A706, 1043EB32, 104BAD9E, 13168DC5, 1322A7AC
Location: West Rockhill, PA
x 5

Re: EDL/ComSkip discussion

Post by Ken.F »

Deihmos wrote: Tue May 05, 2020 6:10 pm Is there a way to get this working on Linux? I had to switch to Windows to get it going because I couldn't find a way to launch comskip on linux. it would be great if the Hdhomerun app had an option to launch comskip or a script when a recording is triggered.
It works great on Linux. Are you having trouble installing it or using it?

Deihmos
Posts: 66
Joined: Sun Jul 08, 2012 9:25 pm

Re: EDL/ComSkip discussion

Post by Deihmos »

Ken.F wrote: Tue May 05, 2020 8:29 pm
Deihmos wrote: Tue May 05, 2020 6:10 pm Is there a way to get this working on Linux? I had to switch to Windows to get it going because I couldn't find a way to launch comskip on linux. it would be great if the Hdhomerun app had an option to launch comskip or a script when a recording is triggered.
It works great on Linux. Are you having trouble installing it or using it?
How do you get it to auto process a recording or are you manually doing it? Can you please share the details?

Thanks.

Ken.F
Posts: 2320
Joined: Fri Apr 05, 2013 9:20 am
Device ID: 1041A706, 1043EB32, 104BAD9E, 13168DC5, 1322A7AC
Location: West Rockhill, PA
x 5

Re: EDL/ComSkip discussion

Post by Ken.F »

Deihmos wrote: Tue May 05, 2020 8:35 pm How do you get it to auto process a recording or are you manually doing it? Can you please share the details?
I run a Comskip script from a cron job twice per hour at 5 and 35 minutes past the hour. The script needs Comskip to already be installed and working so I'm not sure which details to start sharing first.

Deihmos
Posts: 66
Joined: Sun Jul 08, 2012 9:25 pm

Re: EDL/ComSkip discussion

Post by Deihmos »

Ken.F wrote: Tue May 05, 2020 9:48 pm
Deihmos wrote: Tue May 05, 2020 8:35 pm How do you get it to auto process a recording or are you manually doing it? Can you please share the details?
I run a Comskip script from a cron job twice per hour at 5 and 35 minutes past the hour. The script needs Comskip to already be installed and working so I'm not sure which details to start sharing first.
I sent you a PM. It wouldn't be difficult for me to install comskip on debian but I am not familiar with scripting or cron job.

Deihmos
Posts: 66
Joined: Sun Jul 08, 2012 9:25 pm

Re: EDL/ComSkip discussion

Post by Deihmos »

Ken.F wrote: Tue May 05, 2020 9:48 pm
Deihmos wrote: Tue May 05, 2020 8:35 pm How do you get it to auto process a recording or are you manually doing it? Can you please share the details?
I run a Comskip script from a cron job twice per hour at 5 and 35 minutes past the hour. The script needs Comskip to already be installed and working so I'm not sure which details to start sharing first.
Can you please share the script? Thanks.
Last edited by Deihmos on Mon May 11, 2020 7:47 am, edited 1 time in total.

Ken.F
Posts: 2320
Joined: Fri Apr 05, 2013 9:20 am
Device ID: 1041A706, 1043EB32, 104BAD9E, 13168DC5, 1322A7AC
Location: West Rockhill, PA
x 5

Re: EDL/ComSkip discussion

Post by Ken.F »

I shared my Linux Comskip script with Deihmos a couple of days ago. It does work but I have some feature requests to work on before I put it out in the wild. I don't want to keep posting new versions with every little change so when I think I have everything dialed in I'll post it for everyone else.

onyxblack
Posts: 11
Joined: Thu Jan 16, 2014 2:59 pm

Re: EDL/ComSkip discussion

Post by onyxblack »

Any chance you had finished your script and its ready for everyone?

Ken.F
Posts: 2320
Joined: Fri Apr 05, 2013 9:20 am
Device ID: 1041A706, 1043EB32, 104BAD9E, 13168DC5, 1322A7AC
Location: West Rockhill, PA
x 5

Re: EDL/ComSkip discussion

Post by Ken.F »

I can post what I have later tonight. It works well as is, but I've been trying to figure out how to limit the number of titles it can process at the same time. Right now I can have Comskip either run on one recording at a time or multiple recordings all at the same time. I'd like to be able to run it on multiple recordings with a limit of 6 or 8 at once just for a sanity check.

Ken.F
Posts: 2320
Joined: Fri Apr 05, 2013 9:20 am
Device ID: 1041A706, 1043EB32, 104BAD9E, 13168DC5, 1322A7AC
Location: West Rockhill, PA
x 5

Re: EDL/ComSkip discussion

Post by Ken.F »

Ken.F wrote: Tue Nov 17, 2020 1:27 pm I can post what I have later tonight.
Oops. That didn't work out as I planned. I got home later than usual last night and forgot all about it. :(

Ken.F
Posts: 2320
Joined: Fri Apr 05, 2013 9:20 am
Device ID: 1041A706, 1043EB32, 104BAD9E, 13168DC5, 1322A7AC
Location: West Rockhill, PA
x 5

Re: EDL/ComSkip discussion

Post by Ken.F »

This Linux bash script will run Comskip on completed recordings in the HDHomeRun directory one at a time, then exit.
This script will only run Comskip on recordings that don't already have an existing .edl file. If the DVR has any recordings in progress when the script is started it will exit without running Comskip. This script and the included comskip.ini is intended for DVR hardware with limited data throughput like my Asus Tinkerboard and Raspberry Pi 2 with a USB 2.0 HDD, or for the first run on a HDHomeRun directory with a lot of existing recordings.

Near the top of the script change the three variables to match your paths.

PATH=</your/normal/user/$PATH> Your normal user environment path can be found by entering echo $PATH in the terminal.
hdhr=</full/path/to/HDHomeRun/> This is the full path to the HDHomeRun directory.
ini=</full/path/to/comskip.ini> Full path to the comskip.ini file this script will use for commercial detection.

comskip.sh

Code: Select all

#!/bin/bash

# Bash script to scan HDHomeRun recording folder and run Comskip on .mpg recording files that have no .edl file.

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
hdhr=/media/USB_HDD1/HDHomeRun/
ini=/home/ken/comskip.ini

# To prevent more than one instance of script from running at the same time check for comskip.lock file in HDHomeRun folder. If there exit, if not create it.

if [ -f "$hdhr"comskip.lock ]; then
   exit
else
  touch "$hdhr"comskip.lock
fi

# Check for recordings in progress (Live TV buffer files are ignored).
# If no recordings are in progress run comskip on .mpg files that have no .edl file.

if [[ ! $(find $hdhr -name "*.mpg" ! -name "Live channel*" -mmin -.1 | wc -l) -gt 0 ]]
then
    for f in $hdhr*/*.mpg ; do
    if [[ ! -f "${f%.*}.edl" ]] &&
       [[ -f "${f%Live\ channel*.mpg}" ]] ; then
       nice -n 19 comskip --ini="$ini" "$f" &
    fi
done
wait
fi

# Delete comskip.lock file.

rm "$hdhr"comskip.lock

# When recordings are deleted from within Kodi the .edl files are left behind.
# This section cleans up the orphaned .edl files, then deletes empty folders.

# Delete orphaned .edl files.

for f in $hdhr*/*.edl; do
    if [[ ! -f "${f%.*}.mpg" ]]; then
       rm -f -v -- "$f"
    fi
done

# Delete empty folders not named "Live TV".

find "$hdhr" -type d -empty ! -name "Live TV" -exec rmdir {} \;

This is the comskip.ini file that I use with this script.

comskip.ini

Code: Select all

detect_method=43 ;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=0 ;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=25 ;minimum length in seconds to consider a segment a commercial break
max_commercial_size=125 ;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=250 ; 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=0 ; 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=0 ; 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=1 ; 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=1 ; 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
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=1 ; 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"
output_default=0 ; This dis/enables the default .txt output file.
output_plist_cutlist=0
output_scf=0
thread_count=4
edl_skip_field=3
output_edlp=0
always_keep_first_seconds=5	;Mark this number of seconds at beginning as show
always_keep_last_seconds=60 ;Mark this number of seconds at end as show
lowres=10 ;Enables resolution reduction, setting to 10 makes comskip choose the best value automatically

Post Reply