Linux

In Linux you will need to create a couple of bash scripts. But first by installing task spooler

sudo apt-get install task-spooler

Then create a couple of bash scripts.

/var/opt/nextpvr/scripts/PostProcessing.sh
#!/bin/bash
#!/usr/bin/env bash
#Input arguments

SOURCEFILENAME=$1  #full path + filename
CH_OID=$2          #Channel ID
OID=$3             #
DEV_OID=$4         #
REC_TITLE=$5       #

# Locally generated variables
#
# Change extensions to .mp4 and .xml
OUTFILE=`echo "$1"  | sed s/\.ts/\.mp4/g`
XMLFILE=`echo "$1"  | sed s/\.ts/\.xml/g`
TEMPDIR="/tmp"
MYPID=$$

echo "Calling Handbrake! .....................\r"
echo "Filename "$SOURCEFILENAME
echo "Vars     "$@
tsp /var/opt/nextpvr/scripts/HandbrakeCLI.sh "$SOURCEFILENAME" "$CH_OID" "$OID" "$DEV_OID" "$REC_TITLE"
echo "Task Added to task-spooler.\r"
/var/opt/nextpvr/scripts/HandbrakeCLI.sh
#!/bin/bash
#!/usr/bin/env bash
#Input arguments

SOURCEFILENAME=$1  #full path + filename
CH_OID=$2          #Channel ID
OID=$3             #
DEV_OID=$4         #
REC_TITLE=$5       #

# Locally generated variables
#
# Change extensions to .mp4 and .xml
# 's/\(.*\)\/\(.*\)\.\(.*\)$/\1\/\2.mp4/
# s/\.ts/\.mp4/g
OUTFILE=`echo "$1"  | sed 's/\(.*\)\/\(.*\)\.\(.*\)$/\1\/\2.mp4/'`
XMLFILE=`echo "$1"  | sed s/\.ts/\.xml/g`
TEMPDIR="/tmp"
MYPID=$$

echo "Starting transcode ! .....................\r"
echo "Source file        ! "$SOURCEFILENAME
echo "Output file        ! "$OUTFILE
echo "PID                ! "$MYPID
echo "Variable CH_OID    ! "$CH_OID
echo "Variable OID       ! "$OID
echo "Variable DEV_OID   ! "$DEV_OID
echo "Variable REC_TITLE ! "$REC_TITLE

  # run handbrakecli with a nice level of 19 so other processes can still use the CPU if needed
  nice -n 19 HandBrakeCLI -i "$SOURCEFILENAME" -o "$OUTFILE" -e x264 -q 21 -O -r 30 --pfr \
  -x ref=6:bframes=5:vbv-maxrate=62000:vbv-bufsize=62000 -X 720 --decomb --loose-anamorphic \
  --modulus 2 --x264-tune film --x264-preset medium --h264-profile main --h264-level 4.1 -a 1,1 \
  -E copy:ac3,faac -B auto,160 -R auto,auto -6 auto,dpl2 --audio-copy-mask aac,ac3,dtshd,dts,mp3 \
  --audio-fallback ffac3 -f mp4 --verbose 1 2

  #nice -n 19 HandBrakeCLI -i "$SOURCEFILENAME" -o "$OUTFILE" -e x264 -q 21 -O -r 30 --pfr \
  #-x ref=6:bframes=5:vbv-maxrate=62000:vbv-bufsize=62000 -X 720 --decomb --loose-anamorphic \
  #--modulus 2 --x264-tune film --x264-preset medium --h264-profile main --h264-level 4.1 -a 1,1 \
  #-E copy:aac,ac3 -B auto,160 -R auto,auto -6 auto,dpl2 --audio-copy-mask aac,ac3,dtshd,dts,mp3 \
  #--audio-fallback aac -f mp4 --all-subtitles --verbose 1 2

  #HandbrakeCLI Result
  handbrakeresult=$?
  echo "HandBrakeCLI exited! exit code is:"
  echo $handbrakeresult
if [ $handbrakeresult -eq 0 ]
  then
    #Cleanup
    echo "Completed transcode! Cleaning up original recording and temp files.\r"
    #rm -f /tmp/pp-$MYPID.log
    rm -f "$SOURCEFILENAME"
  else
    echo "Handbrake did not return a exit code of 0, not cleaning up..."
fi

Then you can add some helper scripts to help manage the queue.

checkqueue.sh
#!/bin/bash
runuser -l nextpvr -c tsp
clearqueue.sh
#!/bin/bash

runuser -l nextpvr -c "tsp -C"
addjob.sh
#!/bin/bash

runuser -l nextpvr -c "/var/opt/nextpvr/scripts/PostProcessing.sh '$1'"