Мне нужно, чтобы ftp загрузил все файлы mp4 в каталог длиной> 4 минуты, используя оболочку. Я не могу найти сценарий, чтобы проверить, как долго видео. Кто-нибудь знает, как это сделать?
Большое спасибо!
Это даст вам длину видео.
ffmpeg -i myvideo 2>&1 | grep Duration | cut -d ' ' -f 4 | sed s/,//
Mediainfo - быстрый инструмент для этой цели:
$ mediainfo --Inform="Video;%Duration%" [inputfile]
Вы можете найти больше вариантов в , более подробный ответ .
В моих тестах ffprobe
занимает 0,3 секунды, а mediainfo
- 0,09 секунды.
В дополнение к личному решению это можно использовать для всего каталога:
for f in *; do ffmpeg -i "$f" 2>&1 | grep Duration | cut -d " " -f 4 | sed s/,// | tr -d "\n" && echo " $f"; done
его можно даже расширить на | sort
, чтобы файлы сортировались по их длине.
Вы можете добавить это в .bashrc
или .bash_aliases
, чтобы иметь возможность сделать lsvlength | sort
в каталоге
alias lsvlength='for f in *; do ffmpeg -i "$f" 2>&1 | grep Duration | cut -d " " -f 4 | sed s/,// | tr -d "\n" && echo " $f"; done'
Можно попытаться использовать команду avconv..
Сначала Вы должны для установки:
при вводе команды с флагом-i Вы получите информацию о видео:
avconv -i test.mp4
В выводе существует поле под названием Продолжительность
avconv version 0.8.4-4:0.8.4-0ubuntu0.12.04.1, Copyright (c) 2000-2012 the Libav developers
built on Nov 6 2012 16:51:33 with gcc 4.6.3
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test.mp4':
Duration: 00:58:28.05, start: 0.000000, bitrate: 888 kb/s
Stream #0.0(eng): Video: h264 (High), yuv420p, 720x404, 748 kb/s, 25 fps, 25 tbr, 20k tbn, 50 tbc
Stream #0.1(und): Audio: aac, 48000 Hz, stereo, s16, 127 kb/s
Теперь можно использовать команду, чтобы только получить значение поля Duration
Тип:
avconv -i file.mp4 2>&1 | grep 'Duration' | awk '{print $2}' | sed s/,//
В моем случае результат:
00:58:28.05
58 Минут и 28,05 секунд.
Надежда это будет полезный!
Еще проще:
avprobe file.mp4 -show_format_entry duration
exiftool
(первоначально предназначался для чтения метаданных камеры из файлов изображений, но позже был расширен для чтения и записи метаданных из почти медиа-файлов любого вида. ) очень удобно использовать для этого. Запустите его с помощью:
exiftool FILE.mp4 | grep Duration
Вероятно, вам сначала потребуется установить exiftool
, но это легко сделать с помощью следующей команды (в Debian и ее производных, таких как Ubuntu и т. 111]
Конечно, этот ответ - просто еще одна альтернатива. Многие другие ответы тоже хороши. :)
Если вы хотите посмотреть продолжительность некоторых видео в каталоге, вы можете использовать следующую команду
exiftool * | grep ^ Продолжительность | cut -d '' -f 26
blockquote>
Как вы можете видеть, есть множество способов сделать это. ffprobe mediafile -show_entries format=format=duration 2>&1 | grep DURATION
где медиафайл - это имя файла, будет выводиться аналогично приведенному ниже. Первый - это длительность первого потока (обычно видео), а второй - длительность второго потока (обычно аудио)
DURATION : 00:21:40.132000000
DURATION : 00:21:40.062000000
. ffprobe
является более элегантным решением, чем ffmpeg
, которое выдает ошибку, если не указан выходной путь.
ffprobe video.mp4 2>&1 | grep -E '^ +Duration' | cut -d':' -f2- | cut -d, -f1