Added cli options. Fixed copy logic for directories

This commit is contained in:
Oliver Atkinson 2023-12-30 16:03:08 -07:00
parent d80d426a68
commit 632653808b

View File

@ -1,31 +1,46 @@
#!/bin/bash
# ssh-encode FILE SSH-ALIAS
FILE=$1
OTHER=$2
EXTENSION=".new.mp4"
# probably best this file is on a tmpfs mount as to reduce
# rw wear
TEMP="/tmp/"
__usage="Usage: $(basename $0) FILE [ssh alias]
Options:
[FILE], Input video file
[ssh alias], The alias setup in ~/.ssh/config (default location)
See: ssh_config(5)
-d, Delete origional file
Notes:
The file will be copied to the remote computer and then the new file movied to the local computer.
This can use lots of bandwidth. Plan accordingly.
"
if [[ -z $1 ]];
then
echo "$__usage"
echo "Pass the file to encode as the first argument."
exit
fi
if [[ -z $2 ]];
then
echo "$__usage"
echo "Pass the ssh alias of the remote device as the second argument."
exit
fi
FILE=$1
BASE=$(basename $FILE)
OTHER=$2
EXTENSION=".new.mp4"
TEMP="/tmp/"
# move file to other's temp drive
scp $FILE $OTHER:$TEMP
# use ffmpeg to encode on other computer
ssh $OTHER "ffmpeg -y -i $TEMP$FILE -vcodec h264_nvenc -acodec aac -pix_fmt yuv420p -g 15 -movflags frag_keyframe+empty_moov $TEMP$FILE$EXTENSION"
ssh $OTHER "ffmpeg -y -i $TEMP$BASE -vcodec hevc $TEMP$BASE$EXTENSION"
# move file back
scp $OTHER:$TEMP$FILE$EXTENSION .
scp $OTHER:$TEMP$BASE$EXTENSION $FILE$EXTENSION
# delete temp file
ssh $OTHER "rm $TEMP$FILE; rm $TEMP$FILE$EXTESION"
ssh $OTHER "rm $TEMP$FILE; rm $TEMP$FILE$EXTENSION"
if [[ $3 == "-d" ]];
rm $FILE
then