Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: командой строкой получить с видео его свойства  (Прочитано 842 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн mstdmstd

  • Автор темы
  • Активист
  • *
  • Сообщений: 322
    • Просмотр профиля
Нет ли возможности в Kubuntu 14.4 командой строкой(может какой утилитой) из каталога с видео разного типа получить по каждому файлу тип видео и разрешения видео?

  Спасибо!

Оффлайн Tear

  • Старожил
  • *
  • Сообщений: 1445
  • Ubuntu 16.04 LTS
    • Просмотр профиля
mediainfo?

Оффлайн mstdmstd

  • Автор темы
  • Активист
  • *
  • Сообщений: 322
    • Просмотр профиля
mediainfo?
Да выводит информацию о файле. А не может ли она выводить данные о каталоге файлов?
Нужно из большого списка файлов выбрать только файлы определенного разрешения...
В команде bash? bash практически не знаю...

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
mstdmstd,
1. Найти все видео файлы:
find -type f -exec file --mime-type {} + | grep -Po ".*(?=:\s+video/[^/]*$)"
2. Разрешение видео файла:
mediainfo --Inform="Video;%Width%x%Height%" "VIDEO_FILE"
3. Формат видео файла:
mediainfo --Inform="General;%Format%" "VIDEO_FILE"
Вывод данных вида: разрешение, формат, файл:
IFS=$'\n'; \
for F in $(find -type f -exec file --mime-type {} + | grep -Po ".*(?=:\s+video/[^/]*$)"); \
do RES=$(mediainfo --Inform="Video;%Width%x%Height%" "$F"); FRMT="$(mediainfo --Inform="General;%Format%" "$F")"; \
echo "$RES $FRMT $F"; done

(команды ниже вставляются в конец после done)
Поиск нужного разрешения например 640x360:
| grep '^640x360'
Поиск нужного формата например MPEG-4:
| egrep '^[^ ]+ MPEG-4'
Сортировка вывода по разрешению:
| sort -k1
Сортировка вывода по формату:
| sort -k2
« Последнее редактирование: 01 Августа 2016, 22:47:10 от renzrv »

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Вот более правильные варианты с выводом нескольких внутренних переменных mediainfo за один раз:
IFS=$'\n'; \
for F in $(find -type f -exec file --mime-type {} + | grep -Po '.*(?=:\s+video/[^/]*$)'); \
do mediainfo --Inform="$(echo -e 'General;GFRMT:%Format% \nVideo;VRES:%Width%x%Height%')" "$F" \
| tr -d '\n'; echo " FILE:\"$F\""; \
done

IFS=$'\n'; \
for F in $(find -type f -exec file --mime-type {} + | grep -Po '.*(?=:\s+video/[^/]*$)'); \
do mediainfo --Inform="$(echo -e 'General;GFRMT:"%Format%" OVBTRM:"%OverallBitRate_Mode%" OVBTR:"%OverallBitRate/String%" \nVideo;VFRMT:"%Format%" VRES:"%Width%x%Height%" VASPCT:"%DisplayAspectRatio/String%" VBTR:"%BitRate/String%" VBTRMAX:"%BitRate_Maximum/String%" \nAudio;AFRMT:"%Format%" ABTRM:"%BitRate_Mode/String%" ABTR:"%BitRate/String%" ABTRMAX:"%BitRate_Maximum/String%"')" "$F" \
| sed -r 's/ (.bps)/\1/g; s/([0-9]+) ([0-9]+.bps)/\1\2/g' | tr -d '\n'; echo " FILE:\"$F\""; \
done

Что выводит смотреть список переменных указаных в сожержимом echo -e "" параметра --Inform.
Полный список и описания переменных: mediainfo --Info-Parameters

« Последнее редактирование: 14 Августа 2016, 13:12:37 от renzrv »

 

Страница сгенерирована за 0.048 секунд. Запросов: 26.