#!/bin/sh SRC=collections/_aulas # SCRIPT=script/ SCRIPT=/var/www/src/AliceClass/script/ # TMP=tmp TMP=$(mktemp -d) ASSETS="$TMP/assets" PARAM="scale=1920:1080: force_original_aspect_ratio=decrease: eval=frame,pad=1920:1080: -1:-1:color=black" VIDEOS_PATH=/var/www/html/aliceclass_videos create_thumb () { THUMB_PATH=$1 SRC_FILE=$2 if test ! -f "${THUMB_PATH}" ; then ffmpeg -y -i "${SRC_FILE}" -vframes 1 -an -s 400x222 -ss 30 "${THUMB_PATH}" fi } create_intro_clip () { AUTHOR=$1 VIDEO_TITLE=$2 # sed "s/nomenome/$AUTHOR/g" ${SCRIPT}/intro.svg | sed "s/curso/${VIDEO_TITLE}/g" > ${TMP}/tmp-intro.svg sed "s/nomenome/$AUTHOR/g; s/curso/${VIDEO_TITLE}/g" ${SCRIPT}/intro.svg > ${TMP}/tmp-intro.svg ffmpeg -y -loop 1 -i ${TMP}/tmp-intro.svg -i ${SCRIPT}/intro.wav -shortest ${TMP}/tmp-intro.mkv } process_video () { # VIDEO_TITLE=$1 # USERNAME=$2 # SRC_FILE=$3 # AULA=$4 # DEST_FILE=$5 VIDEO_TITLE=$1 AUTHOR=$2 SRC_FILE=$3 AULA=$4 DEST_FILE=$5 # no output path if [ -z "$DEST_FILE" ]; then DEST_FILE="$ASSETS/videos/${VIDEO_TITLE}.mp4" fi THUMB_PATH="${VIDEOS_PATH}/$AUTHOR/thumbs/${VIDEO_TITLE}.jpg" # THUMB_PATH=$(dirname $(dirname $DEST_FILE))/thumbs/${VIDEO_TITLE}.jpg echo "########################################" echo "# Aula: ${AULA}" echo "# Thumb Path: $THUMB_PATH" echo "# Author: ${AUTHOR}" echo "# Input: ${SRC_FILE}" echo "# Src: ${SRC}" echo "# Dest: ${DEST_FILE}" echo "# Name: ${VIDEO_TITLE}" echo "# Script Path: ${SCRIPT}" echo "########################################" # exit # #################################### # Creating the thumbnail if does not exist # #################################### create_thumb "${THUMB_PATH}" "${SRC_FILE}" # #################################### # if output exist, continue # #################################### if test -f "$ASSETS/videos/${VIDEO_TITLE}.mp4" ; then continue fi # #################################### # Creating the intro clip # #################################### create_intro_clip "${AUTHOR}" "${VIDEO_TITLE}" # ################################################### # Audio adjustment # ################################################### # Some possible options # -af loudnorm # -af dynaudnorm=p=1 # -af speechnorm=e=12.5:r=0.0001:l=1 # -af acompressor=threshold=0.089:ratio=9:attack=200:release=1000:makeup=2 ffmpeg -y -i "${SRC_FILE}" -af dynaudnorm=p=1 ${TMP}/tmp-normalized.mkv # #################################################### # Wartermarking the video file # #################################################### sed "s/nomenome/$AUTHOR/g" ${SCRIPT}/watermark.svg | sed "s/curso/${VIDEO_TITLE}/g" > ${TMP}/tmp-watermark.svg # add watermark to video ffmpeg -y -i ${TMP}/tmp-normalized.mkv -i ${TMP}/tmp-watermark.svg -i ${SCRIPT}/logo.png \ -filter_complex "[0][1]overlay=5:H-h-5:format=auto[bg];[bg][2]overlay=W-w-5:5:format=auto" -c:a copy ${TMP}/tmp-video.mkv # #################################################### # Concatenating videos # #################################################### echo "Concatenando videos..." ffmpeg -y \ -i ${TMP}/tmp-intro.mkv \ -i ${TMP}/tmp-video.mkv \ -i ${TMP}/tmp-credits.mkv \ -filter_complex \ "[0:v]$PARAM[v0]; [1:v]$PARAM[v1]; [2:v]$PARAM[v2]; [v0][0:a][v1][1:a][v2][2:a] concat=n=3:v=1:a=1 [v] [a]" \ -map [v] -map [a] \ -s hd720 \ -vcodec libx264 \ -pix_fmt yuv420p \ -vsync 2 \ "$DEST_FILE" } # mkdir -p ./${TMP} # #################################### # Creating the credits clip # #################################### if test ${TMP}/tmp-credits.mkv -ot ${SCRIPT}/credits.svg ; then echo "########################################" echo "# Gerando o tmp-credits.mkv" echo "########################################" ffmpeg -y -loop 1 -i ${SCRIPT}/credits.svg -i ${SCRIPT}/credits.wav -shortest ${TMP}/tmp-credits.mkv fi # #################################### # Creating dest dir # #################################### mkdir -p $ASSETS/thumbs mkdir -p $ASSETS/videos if [ $# -gt 1 ]; then VIDEO_TITLE=$1 AUTHOR=$2 SRC_FILE=$3 AULA=$4 DEST_FILE=$5 process_video "$VIDEO_TITLE" "$AUTHOR" "$SRC_FILE" "$AULA" "$DEST_FILE" exit fi # for aula in ./${SRC}/*.md; do # # #################################### # # Getting parameters from aulas # # #################################### # VIDEO_TITLE="$(basename "${aula}" .md)" # AUTHOR=$(grep "^author: " "${aula}" | sed -e 's/author: //g') # SRC_FILE="${SRC}/${VIDEO_TITLE}.mkv" # # process_video "$VIDEO_TITLE" "$AUTHOR" "$SRC_FILE" # done # rm -f ${TMP}