Skip to main content
How To Schedule Jobs in NextPVR

How To Schedule Jobs in NextPVR

·399 words·2 mins
Mike Curtis
Author
Mike Curtis
Dedicated to Technology
Table of Contents

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'"

Related