Как проверить, как долго видео (mp4) использует оболочку?
16
Мне нужно, чтобы ftp загрузил все файлы mp4 в каталог длиной> 4 минуты, используя оболочку. Я не могу найти сценарий, чтобы проверить, как долго видео. У кого-нибудь есть идеи, как это сделать?
Также работает для удаленных URL-адресов видео, например, ffmpeg -i " instagram.fewr1-1.fna.fbcdn.net/t50.2886-16/… " 2> & 1 | grep Продолжительность | cut -d '' -f 4 | SED S /, //
skidadon
Гарантирован ли формат сообщений журнала FFmpeg? Если нет, мне это не очень нравится - он может перестать работать с любым выпуском.
Это дает странные результаты ... например, 2679600 ... лучше использовать mediainfo --Inform="Video;%Duration/String%" [inputfile]... что даст вам что-то вроде 43 минут 50-х
Роберт Ридл
5
Вы можете попробовать использовать команду avconv ..
Сначала вы должны установить:
если вы наберете команду с флагом -i, вы получите информацию о видео:
avconv -i test.mp4
На выходе есть поле с названием Duration
avconv version 0.8.4-4:0.8.4-0ubuntu0.12.04.1,Copyright(c)2000-2012 the Libav developers
built on Nov6201216:51:33 with gcc 4.6.3Input#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 tbcStream#0.1(und): Audio: aac, 48000 Hz, stereo, s16, 127 kb/s
Теперь вы можете использовать команду только для получения значения поля Duration
Это также может быть использовано с avprobe- не нужно -i, но в остальном он работает точно так же. Или ffprobeдля ответа @ per.
Evilsoup
4
exiftool(изначально предназначенный для чтения метаданных камеры из файлов изображений, но позже расширенный для чтения и записи метаданных практически из любого медиа-файла) очень удобно использовать для этого. Запустите это с:
exiftool FILE.mp4 | grep Duration
exiftoolСначала вам, вероятно, потребуется установить , но это легко сделать с помощью следующей команды (в Debian и ее производных, таких как Ubuntu и т. Д.):
apt install libimage-exiftool-perl
Конечно, этот ответ является еще одной альтернативой. Многие другие ответы тоже хороши. :)
Не нужно использовать grepи такие. Просто exiftool -T -Duration *.mkv(или любой другой шаблон файла)
PerlDuck
0
Как вы можете видеть, есть множество способов сделать это.
ffprobe mediafile -show_entries format=format=duration 2>&1 | grep DURATIONгде mediafile - это имя файла, будет выводиться аналогично приведенному ниже. Первый - это длительность первого потока (обычно видео), а второй - длительность второго потока (обычно аудио).
Ответы:
Это даст вам длину видео.
источник
Mediainfo - быстрый инструмент для этой цели:
Вы можете найти больше вариантов в более подробном ответе .
В моих тестах это
ffprobe
занимает 0,3 секунды иmediainfo
0,09 секунды.источник
mediainfo --Inform="Video;%Duration/String%" [inputfile]
... что даст вам что-то вроде 43 минут 50-хВы можете попробовать использовать команду avconv ..
Сначала вы должны установить:
если вы наберете команду с флагом -i, вы получите информацию о видео:
avconv -i test.mp4
На выходе есть поле с названием Duration
Теперь вы можете использовать команду только для получения значения поля Duration
Тип:
В моем случае результат:
58 минут и 28,05 секунды.
Надеюсь, это будет полезно!
источник
avprobe
- не нужно-i
, но в остальном он работает точно так же. Илиffprobe
для ответа @ per.exiftool
(изначально предназначенный для чтения метаданных камеры из файлов изображений, но позже расширенный для чтения и записи метаданных практически из любого медиа-файла) очень удобно использовать для этого. Запустите это с:exiftool
Сначала вам, вероятно, потребуется установить , но это легко сделать с помощью следующей команды (в Debian и ее производных, таких как Ubuntu и т. Д.):Конечно, этот ответ является еще одной альтернативой. Многие другие ответы тоже хороши. :)
источник
Еще проще:
источник
Если добавить решение pers , это можно использовать для всего каталога:
это может даже быть расширено,
| sort
чтобы иметь файлы, отсортированные по их длине.Вы можете добавить это в
.bashrc
или.bash_aliases
для того, чтобы иметь возможность делатьlsvlength | sort
в каталогеисточник
ffprobe
это более элегантное решение, чем то,ffmpeg
которое выдает ошибку, если не указан выходной путь.источник
Если вы хотите увидеть продолжительность некоторых видео в каталоге, вы можете использовать следующую команду
источник
grep
и такие. Простоexiftool -T -Duration *.mkv
(или любой другой шаблон файла)Как вы можете видеть, есть множество способов сделать это.
ffprobe mediafile -show_entries format=format=duration 2>&1 | grep DURATION
где mediafile - это имя файла, будет выводиться аналогично приведенному ниже. Первый - это длительность первого потока (обычно видео), а второй - длительность второго потока (обычно аудио).источник