initial commit
This commit is contained in:
parent
cd2d73f9fc
commit
0cf358392e
112
ffmpeg.sh
Normal file
112
ffmpeg.sh
Normal file
@ -0,0 +1,112 @@
|
||||
#!/bin/bash
|
||||
UPDATED="2024-01-09"
|
||||
|
||||
header () {
|
||||
clear
|
||||
echo "FFMpeg Encoder (HEVC/AAC) [$UPDATED]"
|
||||
echo "--------------------------------------------------"
|
||||
}
|
||||
header
|
||||
|
||||
# Grab input parameters
|
||||
FLDR=$1 # working folder
|
||||
SRC=$2 # input file
|
||||
DST=$3 # output file
|
||||
LOGFILE=encode.log # log file
|
||||
|
||||
# Check if specified folder is present
|
||||
if [ ! -d "$FLDR" ]; then
|
||||
echo "Path [$FLDR] don't exist"
|
||||
exit 1
|
||||
fi
|
||||
cd $FLDR/
|
||||
|
||||
# Check if source file is present
|
||||
if [ ! -f "$SRC" ]; then
|
||||
echo "File [$SRC] don't exist."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Define audio/video codecs
|
||||
CODEC_AUDIO="libfdk_aac"
|
||||
CODEC_VIDEO="hevc_nvenc"
|
||||
|
||||
# Define audio/video bitrates
|
||||
BITRATE_AUDIO="448k"
|
||||
BITRATE_VIDEO="2600k"
|
||||
|
||||
# Define input/output files
|
||||
INPUT="-i ${SRC}"
|
||||
OUTPUT="${DST}.mp4"
|
||||
|
||||
# Define ffmpeg encoding options
|
||||
DEFAULTS="-y -hide_banner -loglevel error -stats"
|
||||
HWACCELL="-hwaccel_device 0 -hwaccel cuda -hwaccel_output_format cuda"
|
||||
SUBTITLES="-c:s copy"
|
||||
AUDIO="-c:a ${CODEC_AUDIO} -b:a ${BITRATE_AUDIO}"
|
||||
VIDEO="-c:v ${CODEC_VIDEO} -b:v ${BITRATE_VIDEO}"
|
||||
RENDER_AUDIO="-tune hq -vbr 5"
|
||||
RENDER_VIDEO="-preset p6"
|
||||
|
||||
# Print pass informations
|
||||
pass() {
|
||||
PASS=$1
|
||||
header
|
||||
echo ">>> Pass $PASS..."
|
||||
echo "--------------------------------------------------"
|
||||
}
|
||||
|
||||
# Abort with message on failed ffmpeg encoding
|
||||
isFailed() {
|
||||
PASS=$1
|
||||
ret_code=$?
|
||||
if [ $ret_code != 0 ]; then
|
||||
if [ -z $2 ]; then
|
||||
echo "[ Pass $PASS: Failed! ]"
|
||||
else
|
||||
echo "[ Something was wrong! ]"
|
||||
fi
|
||||
exit 1
|
||||
else
|
||||
echo "[ Done! ]"
|
||||
fi
|
||||
}
|
||||
|
||||
# Do encode processing (2 passes)
|
||||
encode() {
|
||||
pass 1
|
||||
#ffmpeg -y \
|
||||
# -hide_banner \
|
||||
# -loglevel error -stats \
|
||||
# -hwaccel_device 0 -hwaccel cuda -hwaccel_output_format cuda \
|
||||
# -i ${INPUT} \
|
||||
# -c:v hevc_nvenc -preset medium -b:v 2600k \
|
||||
# -c:a libfdk_aac -b:a 448k \
|
||||
# -pass 1 \
|
||||
# -an -f null /dev/null
|
||||
ffmpeg ${DEFAULTS} ${HWACCELL} ${INPUT} ${SUBTITLES} ${AUDIO} ${VIDEO} -pass 1 -an -f null /dev/null
|
||||
isFailed 1
|
||||
|
||||
pass 2
|
||||
#ffmpeg -y \
|
||||
# -hide_banner \
|
||||
# -loglevel error -stats \
|
||||
# -hwaccel_device 0 -hwaccel cuda -hwaccel_output_format cuda \
|
||||
# -i ${INPUT} \
|
||||
# -c:s copy \
|
||||
# -c:v hevc_nvenc -b:v 2600k \
|
||||
# -preset p6 \
|
||||
# -c:a libfdk_aac -b:a 448k \
|
||||
# -tune hq -vbr 5 \
|
||||
# -movflags +faststart -profile:v main10 \
|
||||
# -pass 2 \
|
||||
# ${OUTPUT}.mp4
|
||||
ffmpeg ${DEFAULTS} ${HWACCELL} ${INPUT} ${SUBTITLES} ${AUDIO} ${RENDER_AUDIO} ${VIDEO} ${RENDER_VIDEO} -pass 2 ${OUTPUT}
|
||||
isFailed 2
|
||||
}
|
||||
|
||||
# Process encoding and check result code level
|
||||
encode > >(tee $LOGFILE) 2>&1
|
||||
isFailed 3
|
||||
|
||||
exit 0
|
Loading…
Reference in New Issue
Block a user