Экспорт продолжительности видео в формате ЧЧ: ММ: СС в.csv

У меня есть скрипт bash, который читает видеофайлы в каталоге и выводит информацию в.csv. Единственная проблема, с которой я столкнулся на данный момент, заключается в том, что когда я экспортирую длительность всех видеофайлов в формате ЧЧ: ММ: СС, он обрезает секунды на любую длительность в течение часа, поэтому мой вывод выглядит как 1:25: вместо 1:25:34. Все что меньше часа выводит правильно. Я знаю, что это не часть.csv, потому что я сначала поместил во временный файл.txt, и он неверен в этом.txt.

Вот что не работает:

mediainfo $file_name > tmp_file

DURATION=`grep "Duration " tmp_file |head -n1 |sed -E 's/ //g;s/Duration://g;s/([0-9]*)ms//g;s/(([0-9]*)h)*(([0-9]*)mn)*(([0-9]*)s)*/\2:\4:\6/g;s/::/:0:/g;s/^:/0:/g'`

2 ответа

Есть еще более простой способ:

mediainfo --Inform="General;%Duration/String3%" /path/to/file

вернет время воспроизведения в формате ЧЧ: ММ: СС.МММ

(Для полного списка переменных --Inform= можно вернуть, просто введите:

mediainfo --Info-Parameters

в командной строке.

Есть более простой способ получить длительность из mediainfo, которая экономит много неуклюжего текста.

mediainfo --Inform="General;%Duration%" /path/to/file

Это вернет продолжительность в миллисекундах.

Затем значение можно передать в функцию strftime() awk для преобразования в H:M:S следующим образом:

ms=$(($(mediainfo --Inform="General;%Duration%" /path/to/file) / 1000)) && \
   echo | awk -v t=$ms '{print strftime("%H:%M:%S", t)}'
Другие вопросы по тегам