Прогресс-бар для ffmpeg

Искусство написания bash скриптов. Делимся своими наработками
Ответить
Аватара пользователя
ZEN
Администратор
Сообщения: 1330
Зарегистрирован: 27 сен 2012, 18:23
Темы: 204
Откуда: Украина, Одесса
Статус: Не в сети

Прогресс-бар для ffmpeg

Сообщение ZEN » 15 фев 2013, 15:13

Данный скрипт своеобразный ответ на тему "pv к ffmpeg".

Код: Выделить всё

#!/bin/bash 
if [[ $# != 2 ]]
then
    echo "Usage:"
    echo "$0 input_file output_file"
    exit 1
fi

if [[ !( -e "$1") ]]
then
    echo "Input file does not exist!"
    exit 2
fi

if [[ ( -e "$2") ]]
then
    echo "Output file already exist!"
    exit 3
fi
total_time=`ffmpeg -i "$1" 2>&1 | grep Dur | sed 's/[:,.]/ /g' | awk '{print ($2*3600)+($3*60)+$4}'`
tmp_file="/tmp/`basename $0 | sed 's/.sh/.log/g'`"
touch $tmp_file

ffmpeg -i "$1" "$2" 2> $tmp_file &

sleep 2s;

if [[ !( -e "$2") ]]
then
    echo "Error! See $tmp_file for details"
    exit 4
fi


while [[ $current -ne $total_time ]]
do
    current=`cat $tmp_file | grep "time=" | sed 's/.*time=/ /g;s/[.].*/ /g'`
    VALUE=`echo "scale=0; ($current*1000)/($total_time*1000/100)"  | bc`
    POS=0
    MAX=50
    CUR=`echo "scale=1; $MAX/100*$VALUE" | bc | awk -F. '{print $1}'`
    echo -en "\033[s"
    echo -n "["
    while [[ $POS -lt $MAX ]]
    do
        if [[ $POS -lt $CUR ]]
        then
            echo -n "#"
        else
            echo -n "="
        fi
        let POS+=1
    done

    echo -n "] $VALUE%"

    sleep 0.2
    echo -en "\033[u"
done

rm $tmp_file
exit 0
бог создал труд и обезьяну
чтоб получился человек
а вот пингвина он не трогал
тот сразу вышел хорошо

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей