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


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

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

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

Оффлайн vdereberya

  • Автор темы
  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Добрый день.
Помогите доработать скрипт.
Есть задача: отслеживать добавление видео файлов в пользовательскую папку, конвертировать их в нужный формат.
Мониторинг папки ведется с помощью inotify tools, конвертирование – ffmpeg.
Сейчас скрипт конвертирование выполняет, но делает это одновременно со всеми файлами. Нужно что бы была возможность задавать количество одновременных конвертаций (например параллельно 5) или вести конвертирование поочередно.
Код: (bash) [Выделить]
#!/bin/bash

INOTIFY_CMD="/usr/bin/inotifywait"
from="/home/incoming/No_converted"
tmp="/home/incoming/Converted_bash/tmp"
to="/home/incoming/Converted"
Mov_dir="/home/incoming/Mov_dir"
normal='_normal'
mobile='_mobile'
LOGO="/home/incoming/Converted_bash/tmp/logo.png"

"$INOTIFY_CMD" -e close_write -e moved_to -m "$from" --format='%f' | \
while read F; do
(
sleep 3
mv "$from/$F" "$tmp/$F"

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
md5sum "$to/$F$normal".mp4 > "$to/$F$normal".md5
cp "$to/$F$normal".mp4 "$to/$F$normal".md5 "$Mov_dir/"


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
md5sum "$to/$F$mobile".mp4 > "$to/$F$mobile".md5
cp "$to/$F$mobile".mp4 "$to/$F$mobile".md5 "$Mov_dir/"

) &
done

Оффлайн alexander.pronin

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

Krjd

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

Оффлайн vdereberya

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

Оффлайн peregrine

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

Krjd

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

Оффлайн peregrine

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

Krjd

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

 

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