Нормализация звуковой дорожки в видео файлов. Задался я тут таким вопросом. Есть коллекция фильмов, клипов, тв передач которые я периодически пересматриваю. Беда в том что один файл орет, а другой шепчет. Вот и приходится подскакивать после такого шептуна. Достало.

Вот и задался я тут таким вопросом. Короче говоря, как советуют "профессионалы" покурил гугл, покурил маны. Задумал купить админ бубны. Поковырялся в Bashе. Залез на форум http://forum.russ2.com/ и там с товарищем IVK коллегиально возвояли вот это. Прошу приветствовать первый в мире скрипт под Bash для нормализация звуковой дорожки в видео файлов.

  1. #!/bin/sh
  2. # замена пробелов на _
  3. find -name "* *" | sort -r | while read i; do mv "$i" "$(dirname "$i")/$(basename "$i" | tr ' ' _)"; done
  4. # извлекаем звуковую дорожку
  5. find . -name "*.avi" -exec ffmpeg -i {} -vn -ar 44100 -ac 2 -ab 128 -f mp3 {}.mp3 \;
  6. # удаляем лишнее из названия файлов
  7. find . -name '*.mp3' -exec rename 's/.avi././' {} \;
  8. # нормализовать mp3
  9. find . -iname '*.mp3' -exec mp3gain -r -d 6 -c -s r {} \;
  10. # создаем список
  11. rm list_tmp.txt list_tmp2.txt
  12. find . -name "*.mp3" -exec echo {} >> list_tmp.txt \;
  13. cat list_tmp.txt | sed 's/.mp3//g' > list_tmp2.txt
  14. cat list_tmp2.txt | cut -c 3- > list.txt
  15. # вставляем звуковую дорожку
  16. for x in $(cat list.txt);
  17. do
  18. ffmpeg -i "${x}".mp3 -i "${x}".avi -vcodec copy -acodec copy "${x}"_norm.avi;
  19. done
  20. # удаляем все временные файлы
  21. find . -name *.mp3 -delete
  22. rm list.txt list_tmp.txt list_tmp2.txt
  23. # возвращаем пробелы
  24. find -name "*_*" | sort -r | while read i; do mv "$i" "$(dirname "$i")/$(basename "$i" | tr '_' ' ')"; done
  25. exit 0

 Жду коментов и предложений.

Добавить комментарий


Защитный код
Обновить