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


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Скрипт мониторинга папки и автоматического конвертирования видео  (Прочитано 816 раз)

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

Оффлайн vdereberya

  • Автор темы
  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Добрый день.
Помогите доработать скрипт.
Есть задача: отслеживать добавление видео файлов в пользовательскую папку, конвертировать их в нужный формат.
Мониторинг папки ведется с помощью inotify tools, конвертирование – ffmpeg.
Сейчас скрипт конвертирование выполняет, но делает это одновременно со всеми файлами. Нужно что бы была возможность задавать количество одновременных конвертаций (например параллельно 5) или вести конвертирование поочередно.
Код: Bash
  1. #!/bin/bash
  2.  
  3. INOTIFY_CMD="/usr/bin/inotifywait"
  4. from="/home/incoming/No_converted"
  5. tmp="/home/incoming/Converted_bash/tmp"
  6. to="/home/incoming/Converted"
  7. Mov_dir="/home/incoming/Mov_dir"
  8. normal='_normal'
  9. mobile='_mobile'
  10. LOGO="/home/incoming/Converted_bash/tmp/logo.png"
  11.  
  12. "$INOTIFY_CMD" -e close_write -e moved_to -m "$from" --format='%f' | \
  13. while read F; do
  14. (
  15. sleep 3
  16. mv "$from/$F" "$tmp/$F"
  17.  
  18. ffmpeg -y -i "$tmp/$F" -s 710x568 -vcodec libx264 -b 6395000 -aspect 4:3 -r 25.000 -vf crop=in_w-2*6:in_h-2*4 -vf format=yuv420p -ab 96k -ar 48000 -map 0:0 -map 0:1 -map 0:1 -map_channel 0.1.0:0.1 -map_channel 0.1.2:0.1 -map_channel 0.1.1:0.2 -map_channel 0.1.3:0.2 -strict -2 -metadata:s:a:0 language=ukr -metadata:s:a:1 language=rus -vf "movie="$LOGO" [wm];[in][wm] overlay=600:100 [out]" "$to/$F$normal".mp4 2> "$to/$F$normal".log
  19. md5sum "$to/$F$normal".mp4 > "$to/$F$normal".md5
  20. cp "$to/$F$normal".mp4 "$to/$F$normal".md5 "$Mov_dir/"
  21.  
  22.  
  23. ffmpeg -y -i "$tmp/$F" -s 480x384 -vcodec libx264 -b 6395000 -aspect 4:3 -r 25.000 -vf crop=in_w-2*6:in_h-2*4 -vf format=yuv420p -ab 96k -ar 48000 -map 0:0 -map 0:1 -map 0:1 -map_channel 0.1.0:0.1 -map_channel 0.1.2:0.1 -map_channel 0.1.1:0.2 -map_channel 0.1.3:0.2 -strict -2 -metadata:s:a:0 language=ukr -metadata:s:a:1 language=rus -vf "movie="$LOGO" [wm];[in][wm] overlay=600:100 [out]" "$to/$F$mobile".mp4 2> "$to/$F$mobile".log
  24. md5sum "$to/$F$mobile".mp4 > "$to/$F$mobile".md5
  25. cp "$to/$F$mobile".mp4 "$to/$F$mobile".md5 "$Mov_dir/"
  26.  
  27. ) &
  28. done

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2540
    • Просмотр профиля
1. По поводу параллельного/последовательного преобразования.
Для конвертирования поочередно уберите
&
перед done.
Зачем париться с параллельными конвертированиями ?
Если все же потребуется, то надо вводить счетчик:
- проверку на количество запущенных преобразований
- при добавлении нового преобразования делать +1
- по окончании делать -1.
2. По поводу отбрасывания уже ранее выполненных преобразований.
Необходимо перед началом цикла выявить дифферент и только их преобразовывать.

Krjd

  • Гость
vdereberya,
Цитировать
-vcodec libx264
зачем параллелить? он и так все ядра задействует...

Оффлайн vdereberya

  • Автор темы
  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
1. По поводу параллельного/последовательного преобразования.
Для конвертирования поочередно уберите
&
перед done.
Зачем париться с параллельными конвертированиями ?
Если все же потребуется, то надо вводить счетчик:
- проверку на количество запущенных преобразований
- при добавлении нового преобразования делать +1
- по окончании делать -1.
2. По поводу отбрасывания уже ранее выполненных преобразований.
Необходимо перед началом цикла выявить дифферент и только их преобразовывать.
Большое спасибо. Все работает как надо. Проверку пока отложу.

Оффлайн peregrine

  • FSM
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 7080
  • Gentoo x64 Ubuntu 16.04.1 x64
    • Просмотр профиля
D101101, нет, если ключик -threads auto (или -threads количество потоков) не указать.

Krjd

  • Гость
peregrine,
хм, а он не выставлен по умолчанию? у меня он сожрал весь проц без остатка, в какой-то момент, для того что-бы нормально поработать, пришлось временно усыпить процесс..
у меня конечно и комп не новый, но 4 ядра есть и разница между занятостью 1 и 4 ядер заметна не вооруженным глазом

Оффлайн peregrine

  • FSM
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 7080
  • Gentoo x64 Ubuntu 16.04.1 x64
    • Просмотр профиля
D101101, 2 месяца назад, если я его руками не указывал, то был 1 поток. Проц 4 ядра с технологией multithread - т.е. 8 виртуальных ядер.

Krjd

  • Гость
peregrine,
 ???
могу лишь еще раз уточнить что речь идет о libx264, все остальные кодеки ffmpeg, скачанный бинарником с оф сайта, обрабатывал на 1 ядре
это было меньше месяца назад

 

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