55 lines
1.6 KiB
Bash
Executable File
55 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
INPUT="$1"
|
|
DURATION=$(ffprobe -v error -select_streams v:0 -show_entries stream=duration -of default=noprint_wrappers=1:nokey=1 "$INPUT");
|
|
SECS=$(echo $DURATION | awk -F'.' '{print $1}')
|
|
FRAG=$(echo $DURATION | awk -F'.' '{print $2}')
|
|
NO_OF_SEGMENTS=$(($SECS/60))
|
|
echo total duration "$SECS.$FRAG"s
|
|
echo number of segments $NO_OF_SEGMENTS
|
|
REST=$(( $SECS % 60 )).$FRAG
|
|
MINS=0
|
|
HOS=0
|
|
|
|
|
|
rm -rf /mnt/central/TEMP_KRYSTOF/parallel/*
|
|
echo "" > /tmp/jobs
|
|
echo "" > /tmp/files
|
|
|
|
SCOUNT=0
|
|
LOOP_NO=0
|
|
|
|
while [[ $SCOUNT -le $SECS ]];
|
|
do
|
|
TIME=`printf "%02d" $HOS`:`printf "%02d" $MINS`:00
|
|
|
|
SEGMENT=60
|
|
if [ $LOOP_NO -eq $NO_OF_SEGMENTS ]
|
|
then
|
|
SEGMENT=$REST
|
|
fi
|
|
|
|
#echo $TIME $SEGMENT
|
|
|
|
OUTPUT=/tmp/$(echo `basename $INPUT` | awk -F'.' '{print $1}')_$TIME.mp4
|
|
|
|
echo "ffmpeg -loglevel panic -ss $TIME -i $INPUT -t $SEGMENT -c:v h264 -pix_fmt yuv420p -crf 22 -preset ultrafast -threads 1 -c:a aac -y $OUTPUT" >> /tmp/jobs
|
|
echo file $OUTPUT >> /tmp/files
|
|
|
|
SCOUNT=$(( SCOUNT + 60 ))
|
|
MINS=$(( $MINS + 1 ))
|
|
|
|
if [ $MINS -ge 59 ]
|
|
then
|
|
MINS=0
|
|
HOS=$(( $HOS + 1 ))
|
|
fi
|
|
LOOP_NO=$(( $LOOP_NO + 1 ))
|
|
done
|
|
|
|
#parallel --eta --progress -S "32/nfaRender,32/nfaDTL01,8/:,8/nfaProjekce,8/nfaAdela" < /tmp/jobs
|
|
#parallel --eta --progress -S "8/nfaRender,8/nfaDTL01,4/nfaAdela,8/:,8/nfaProjekce" < /tmp/jobs
|
|
#parallel --eta --progress -S "4/nfaRender,4/nfaAdela,4/:,16/nfaProjekce" < /tmp/jobs
|
|
parallel --eta --progress -S "4/:" < /tmp/jobs
|
|
FIN="$(echo `basename $INPUT` | awk -F'.' '{print $1}')".mp4
|
|
ffmpeg -f concat -safe 0 -i /tmp/files -c:v copy -c:a copy -y $FIN
|