Укажите имя видеофайла и длительность для нескольких файлов в папке и подпапках с указанием пути, если это возможно

Мне нужно получить список имен файлов и пути вместе с продолжительностью файла. Все видео файлы. Некоторые файлы также находятся в подпапках. Мне нужен список, отсортированный по продолжительности. Моя цель - удалить файлы продолжительностью менее 2 минут. Могу ли я сделать это через терминал или графический интерфейс?

2
задан 8 March 2017 в 05:22

2 ответа

Вам не повезло без использования внешних программ, file videoname.xyz не возвращает продолжительность видео. С другой стороны, avprobe (ffprobe) из пакета libav-tools делает!

Вам потребуется выполнить рекурсивный обход каталога (например, в Python), вызовите avprobe (через подпроцесс), проанализируйте длительность вывода и сохраните длину воспроизведения и имя файла в подходящей структуре.

0
ответ дан 8 March 2017 в 05:22

это должно дать вам список mp4s менее 120 секунд в указанной папке, включая подпапки

find ~/pathtofolder -iname '*.mp4' -type f > vidfiles && while read f; do echo -n "$f: "; ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$f"; done < vidfiles | awk '$NF<120' > shortvids

Просто измените ~/pathtofolder на ваше целевое местоположение.

Список будет в файле с именем shortvids

Я прошу прощения за не сортировку, но я не вижу необходимости, если единственными файлами в списке являются короткие видео.

Если вы хотите изменить продолжительность, ближе к концу измените '$NF<120' на количество секунд. Например, '$NF<300' будет означать « длительность менее 5 минут (или 300 секунд) »

, конечно, вы также можете найти длительности , превышающие или равным путем изменения знака т.е. < - > или =

0
ответ дан 8 March 2017 в 05:22

Другие вопросы по тегам:

Похожие вопросы: