transcode.sh 1.65 KiB
#!/bin/bash
#
# Bento4 must be manually obtained from https://www.bento4.com/downloads/ ffmpeg can be installed as follows
# (Debian - http://www.deb-multimedia.org/) ~$
# sudo echo deb http://www.deb-multimedia.org jessie main non-free >> /etc/apt/sources.list
# ~$ sudo apt update ~$ sudo apt install deb-multimedia-keyring ~$ sudo apt update && sudo apt-get dist-upgrade
#
# First encode the video to 24fps!!! and MP4 (h.264)
#
# Video MP4 file
INPUT=$1
OUTPUT_iFRAMES="$1-iFrames.mp4"
OUTPUT_FRAGMENTED="$OUTPUT_iFRAMES-Fragmented.mp4"
OUTPUT_FOLDER_NAME=$(date +%Y%m%d%H%M%S)$1
echo "OUTPUT_FOLDER_NAME: "$OUTPUT_FOLDER_NAME
rm -rf $OUTPUT_FOLDER_NAME
mkdir $OUTPUT_FOLDER_NAME
# Insert Correct number of I frames
#ffmpeg -y -i $INPUT -profile:v baseline -level 3.0 -c:a libfdk_aac -ac 2 -ab 128k -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 400k -maxrate 400k -bufsize 1000k -vf "scale=-1:360" $OUTPUT_iFRAMES
ffmpeg -y -i $INPUT -profile:v baseline -level 3.0 -c:a aac -ac 2 -ab 128k -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 400k -maxrate 400k -bufsize 1000k -vf "scale=-1:360" -strict experimental $OUTPUT_FOLDER_NAME"/"$OUTPUT_iFRAMES
# fragment MP4
/opt/Bento4-SDK-1-5-1-621.x86_64-unknown-linux/bin/mp4fragment --timescale 1000 $OUTPUT_FOLDER_NAME"/"$OUTPUT_iFRAMES $OUTPUT_FOLDER_NAME"/"$OUTPUT_FRAGMENTED
# Option 1 with Bento4
/opt/Bento4-SDK-1-5-1-621.x86_64-unknown-linux/bin/mp4dash --mpd-name=stream.mpd --use-segment-list --use-compat-namespace -o $OUTPUT_FOLDER_NAME"/"$OUTPUT_FOLDER_NAME $OUTPUT_FOLDER_NAME"/"$OUTPUT_FRAGMENTED
cd $OUTPUT_FOLDER_NAME
tar -cvzf $OUTPUT_FOLDER_NAME".gz" $OUTPUT_FOLDER_NAME