Нормализация звуковой дорожки в видео файлов, Групповая операция по нормализация звуковой дорожки в видео файлов |
Поделиться |
Здравствуйте, гость ( Вход | Регистрация )
Нормализация звуковой дорожки в видео файлов, Групповая операция по нормализация звуковой дорожки в видео файлов |
Поделиться |
25.4.2015, 1:49
Сообщение
#1
|
|
Странник Группа: Пользователь Сообщений: 16 Регистрация: 25.4.2015 Вставить ник Цитата Из: Сергиев Посад Пользователь №: 2805 Страна: Россия Город: Не указан Пол: Муж. Репутация: 0 |
Люди добрые.
Обращаюсь к вам за помощью по созданию скрипта. Я нуб так что не обесуте. Беда у меня со всеми этими цыклами и орфографией. Задался я тут таким вопросом. Есть коллекция фильмов, клипов, тв передач которые я периодически пересматриваю. Беда в том что один файл орет, а другой шепчет. Вот и приходится подскакивать после такого шептуна. Достало. Хочу чтоб у всех файлов громкость была одинаковая на тихая короче нормальная. Вот тут я начал ваять и закончить не могу. Код #!/bin/sh # извлекаем звуковую дорожку find . -name "*.avi" -exec ffmpeg -i {} -vn -acodec copy -f mp3 {}.mp3 \; # удаляем лишнее из названия файлов find . -name '*.mp3' -exec rename 's/.avi././' {} \; # нормализовать mp3 find . -name '*.mp3' -exec normalize-audio -b {} \; # вставляем звуковую дорожку mp3=find . -name "*.mp3" {} \; avi=find . -name "*.avi" {} \; ffmpeg -i $mp3 -i $avi -y $avi Люди добрые поможите довести мысль до конца. |
|
|
25.4.2015, 6:07
Сообщение
#2
|
|
Крупный специалист Группа: Пользователь Сообщений: 301 Регистрация: 24.7.2014 Вставить ник Цитата Пользователь №: 2557 Страна: Украина Город: Не указан Пол: Муж. Репутация: 2 |
|
|
|
25.4.2015, 10:22
Сообщение
#3
|
|
Странник Группа: Пользователь Сообщений: 16 Регистрация: 25.4.2015 Вставить ник Цитата Из: Сергиев Посад Пользователь №: 2805 Страна: Россия Город: Не указан Пол: Муж. Репутация: 0 |
Спасибо за подсказку, но это не совсем то.
Код for i in *avi; do mencoder "$i" -ovc copy -oac mp3lame -lameopts cbr:br=128:vol=5 -o "Vol5_${i}"; done; этот скрипт просто приподнимает громкость в значении от 0 до 10. Мне то нужно нормализация, зачем мне поднимать громкость итак в громких файлах. Сообщение отредактировал Slon - 25.4.2015, 10:27 |
|
|
25.4.2015, 23:26
Сообщение
#4
|
|
Профессионал Группа: Глоб. Модератор Сообщений: 10027 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: 30 |
У вас основная проблема в чём? В том, что не совсем ясно, что надо сделать с этими файлами, или в том, что не совсем ясно, как написать скрипт? Я, к примеру, во внутренностях видео/аудиофайлов особо не рылся, так что мне тут не очень понятно как раз первое - что именно (не "вообще", а в деталях) надо сделать с файлами. То есть не знаю. как выполняется нормализация.
-------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
26.4.2015, 0:05
Сообщение
#5
|
|
Странник Группа: Пользователь Сообщений: 16 Регистрация: 25.4.2015 Вставить ник Цитата Из: Сергиев Посад Пользователь №: 2805 Страна: Россия Город: Не указан Пол: Муж. Репутация: 0 |
Попробую объяснить.
Вобшем есть коллекция видео файлов, она находится на машине под ОС Дебиан (без графики), на этой машине поднят Transmission и Mebiatomb. Вот файлы мы иногда просматриваем всей семьёй по телику. Ну и тут как раз заключается беда закачиваем на машину какой не будь новый фильмец а он шепчет не черта неслышно (руки по отдирать таким риперам) телек естественно на всю громкость, а за ним нормальный фильм с нормальной громкостью ну результат короче ясен. Ну короче я загнался этим вопросом покурил гугол выяснил что напрямую это зделать нельзя но можно нормализовать громкость в mp3 файле вот и родилась мысль создать скрипт который извлекает к примеру из avi ауди дорожку в mp3 файл в этом файле нормализует громкость и обратно вставляет ауди дорожку в avi файл. Вот и возникла у меня проблема с написанием данного скрипта. Ну как то так. |
|
|
26.4.2015, 0:18
Сообщение
#6
|
|
Профессионал Группа: Глоб. Модератор Сообщений: 10027 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: 30 |
Зачем всё это нужно - мне как раз ясно; и даже удивляюсь, почему до сих пор нет простого решения этой довольно актуальной проблемы. Вопрос в другом. Я, к примеру, не могу написать требующийся тут скрипт потому что не знаю, что конкретно он должен делать. какова последовательность действий, которые он должен выполнять. У вас та же проблема, или же вы чётко представляете себе эту последовательность, а сложность состоит в том, как её изложить в виде кода?
-------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
26.4.2015, 0:32
Сообщение
#7
|
|
Профессионал Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: 20 |
Вот тут товарищи эту тему обсуждали, может чего-нибудь полезное почерпнете для себя :
http://linuxforum.ru/post/310949 посмотрел внимательней скрипт тот же самый. Сообщение отредактировал kostyalamer - 26.4.2015, 0:37 |
|
|
26.4.2015, 0:42
Сообщение
#8
|
|
Профессионал Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: 20 |
|
|
|
26.4.2015, 1:21
Сообщение
#9
|
|
Странник Группа: Пользователь Сообщений: 16 Регистрация: 25.4.2015 Вставить ник Цитата Из: Сергиев Посад Пользователь №: 2805 Страна: Россия Город: Не указан Пол: Муж. Репутация: 0 |
Это я все читал.
В первом случаи просто повышает громкость а не нормализует. Зачем увеличивать громкость итак громкому файлу. И -vf volnorm 2:0.2 в mencoder не работает. Во втором случаи в принципе тоже самое. В пятом ответе Цитата -vf volnorm 2:0.2 это вместо какого пункта нужно вставить? .Повторюсь -vf volnorm 2:0.2 в mencoder не работает. В mencoder вообще нет такой фунции |
|
|
26.4.2015, 1:42
Сообщение
#10
|
|
Странник Группа: Пользователь Сообщений: 16 Регистрация: 25.4.2015 Вставить ник Цитата Из: Сергиев Посад Пользователь №: 2805 Страна: Россия Город: Не указан Пол: Муж. Репутация: 0 |
IVK.
Ну попробую обрисовать мое виденье алгоритма кода. Скрипт проходит по заданному каталогу и под каталогу находит все файлы с расширением к примеру AVI извлекает из них аудио дорожку и сохраняет ее в виде файла MP3 с аналогичным именем что и исходник. Далее он все MP3 файлы нормализует по громкости (где надо добавляет, а где и убавляет громкость). Затем он должен в исходном файле AVI заменит аудио дорожку на уже нормализованную из MP3 файла ну естественно файлы должны иметь идентичные имена . Результат должен быть сохранен с иным названием на всякий случай. К примеру исходник "Мумия.avi" а результат "Мумия_norm.avi". Ну как то так. |
|
|
26.4.2015, 9:41
Сообщение
#11
|
|
Профессионал Группа: Активный Пользователь Сообщений: 2268 Регистрация: 14.9.2009 Вставить ник Цитата Из: Ленинград Пользователь №: 1594 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: 9 |
Жаль что у Вас без графики. Эту задачу в Аудасити решить совсем запросто. Точно так же как просто звуковой файл в программе можно открыть видеоролик. звук из него она сама высосет. http://www.proshkolu.ru/user/robinzoid/file/4864057/
-------------------- El pueblo unido jamás será vencido! Если чего, я на http://robinzoid.ru/
|
|
|
26.4.2015, 11:08
Сообщение
#12
|
|
Странник Группа: Пользователь Сообщений: 16 Регистрация: 25.4.2015 Вставить ник Цитата Из: Сергиев Посад Пользователь №: 2805 Страна: Россия Город: Не указан Пол: Муж. Репутация: 0 |
robinzoid
Под графикой каждый файл по отдельности. Ужас. У меня 5367 файлов из них 4274 мультиков для ребенка. Полная коллекция СССРовских мультов плюс современные лунтики да фиксики всякие. Короче огромная коллекция. Обрабатывать каждый по отдельности. Либо за большую зарплату, либо из-за большой любви к процессу. |
|
|
26.4.2015, 12:01
Сообщение
#13
|
|
Профессионал Группа: Глоб. Модератор Сообщений: 10027 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: 30 |
На каком этапе дело застопорилось? Вот вытащил скрипт звуковые дорожки, нормализовал их командой -exec normalize-audio - так? Cами эти дорожки в виде файлов .mp3 нормализовались, и вопрос в том, как вернуть их на место, или же нет? До какого этапа скрипт успешно выполняет свою работу?
-------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
26.4.2015, 12:32
Сообщение
#14
|
|
Странник Группа: Пользователь Сообщений: 16 Регистрация: 25.4.2015 Вставить ник Цитата Из: Сергиев Посад Пользователь №: 2805 Страна: Россия Город: Не указан Пол: Муж. Репутация: 0 |
Дело имено в склейке файлов.
Скрипт успешно выполняет эту часть Код #!/bin/sh # извлекаем звуковую дорожку find . -name "*.avi" -exec ffmpeg -i {} -vn -acodec copy -f mp3 {}.mp3 \; # удаляем лишнее из названия файлов find . -name '*.mp3' -exec rename 's/.avi././' {} \; # нормализовать mp3 find . -name '*.mp3' -exec normalize-audio -b {} \; А дальше я что то не как не соображу что делать, какой то клин в голове. Помогите пожалуйста. Сообщение отредактировал Slon - 26.4.2015, 12:34 |
|
|
26.4.2015, 12:52
Сообщение
#15
|
|
Профессионал Группа: Глоб. Модератор Сообщений: 10027 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: 30 |
А если сначала попробовать, для проверки, хотя бы в один файл вставить скриптом его нормализованную дорожку?
-------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
26.4.2015, 14:30
Сообщение
#16
|
|
Профессионал Группа: Активный Пользователь Сообщений: 2268 Регистрация: 14.9.2009 Вставить ник Цитата Из: Ленинград Пользователь №: 1594 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: 9 |
robinzoid ... У меня 5367 файлов из них 4274 мультиков для ребенка.... Ну это в корне меняет дело. -------------------- El pueblo unido jamás será vencido! Если чего, я на http://robinzoid.ru/
|
|
|
26.4.2015, 17:42
Сообщение
#17
|
|
Странник Группа: Пользователь Сообщений: 16 Регистрация: 25.4.2015 Вставить ник Цитата Из: Сергиев Посад Пользователь №: 2805 Страна: Россия Город: Не указан Пол: Муж. Репутация: 0 |
А если сначала попробовать, для проверки, хотя бы в один файл вставить скриптом его нормализованную дорожку? Команда выглядеть так Код ffmpeg -i Мумия.mp3 -i Мумия.avi Мумия_norm.avi и работает. Вот как ее в скрипте реализовать. Код ffmpeg -i(опуия источник) Мумия.mp3(файл со с звуковой дородкой) -i(опять источник) Мумия.avi(файл видео) Мумия_norm.avi(выходной файл) для себя вижу примерно так
Сообщение отредактировал Slon - 26.4.2015, 17:43 |
|
|
26.4.2015, 19:02
Сообщение
#18
|
|
Профессионал Группа: Глоб. Модератор Сообщений: 10027 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: 30 |
Скрипт при отделении файлов звуковых дорожек должен вписывать имена файлов в список и потом по этому списку вставлять дорожки обратно. На Питоне это так:
Код for x in [тут список названий файлов без расширений]: subprocess.call ("ffmpeg -i "+x+".mp3 -i "+x+".avi "+x+"_norm.avi",shell=True) На sh тоже что-то в этом роде. Ну, временное удаление пробелов в названиях или ещё что-то в этом роде - проблемы легко решаемые. -------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
26.4.2015, 21:19
Сообщение
#19
|
|
Странник Группа: Пользователь Сообщений: 16 Регистрация: 25.4.2015 Вставить ник Цитата Из: Сергиев Посад Пользователь №: 2805 Страна: Россия Город: Не указан Пол: Муж. Репутация: 0 |
Ага.
Значит я создаю файл со списком и куда его воткнуть чтоб это работало. Вот что у меня получается Код #!/bin/sh # извлекаем звуковую дорожку find . -name "*.avi" -exec ffmpeg -i {} -vn -ar 44100 -ac 2 -ab 128 -f mp3 {}.mp3 \; # удаляем лишнее из названия файлов find . -name '*.mp3' -exec rename 's/.avi././' {} \; # нормализовать mp3 find . -iname '*.mp3' -exec normalize-audio -b {} \; # создаем список rm list_tmp.txt list_tmp2.txt find . -name "*.mp3" -exec echo {} >> list_tmp.txt \; cat list_tmp.txt | sed 's/.mp3//g' > list_tmp2.txt cat list_tmp2.txt | cut -c 3- > list.txt |
|
|
26.4.2015, 21:34
Сообщение
#20
|
|
Профессионал Группа: Глоб. Модератор Сообщений: 10027 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: 30 |
Там даже можно не файл со списком, а просто список. Я shell поверхностно знаю, так что лучше просто изложу алгоритм.
1. Создаётся пустой список. 2. При извлечении дорожки из каждого видеофайла его имя (без расширения) вносится в этот список. 3. Когда дело доходит до возвращения нормализованных дорожек на место, скрипт открывает этот список и по нему легко находит (без всякого find, просто по циклу for x in) все требующиеся файлы - и с дорожками, и видео. Во всяком случае, если файлы в одном каталоге, то всё должно работать. -------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
26.4.2015, 21:50
Сообщение
#21
|
|
Странник Группа: Пользователь Сообщений: 16 Регистрация: 25.4.2015 Вставить ник Цитата Из: Сергиев Посад Пользователь №: 2805 Страна: Россия Город: Не указан Пол: Муж. Репутация: 0 |
Гы.
Вроде все вырисовывается, осталось пробелы убрать. По результату отпишусь. |
|
|
27.4.2015, 0:21
Сообщение
#22
|
|
Странник Группа: Пользователь Сообщений: 16 Регистрация: 25.4.2015 Вставить ник Цитата Из: Сергиев Посад Пользователь №: 2805 Страна: Россия Город: Не указан Пол: Муж. Репутация: 0 |
Промежуточный вариант.
Код #!/bin/sh # замена пробелов на _ find -name "* *" | sort -r | while read i; do mv "$i" "$(dirname "$i")/$(basename "$i" | tr ' ' _)"; done # извлекаем звуковую дорожку find . -name "*.avi" -exec ffmpeg -i {} -vn -ar 44100 -ac 2 -ab 128 -f mp3 {}.mp3 \; # удаляем лишнее из названия файлов find . -name '*.mp3' -exec rename 's/.avi././' {} \; # нормализовать mp3 find . -iname '*.mp3' -exec mp3gain -r -c -s r {} \; # создаем список rm list.txt list_tmp.txt list_tmp2.txt find . -name "*.mp3" -exec echo {} >> list_tmp.txt \; cat list_tmp.txt | sed 's/.mp3//g' > list_tmp2.txt cat list_tmp2.txt | cut -c 3- > list.txt # вставляем звуковую дорожку for x in $(cat list.txt); do ffmpeg -i "${x}".mp3 -i "${x}".avi -vcodec copy -acodec copy "${x}"_norm.avi; done # удаляем mp3 файлы и все временые файлы find . -name *.mp3 -delete rm list.txt list_tmp.txt list_tmp2.txt exit 0 для нормализации mp3 я изменил с normalize-audio на mp3gain вроде бы пишут что она лучше. Сообщение отредактировал Slon - 27.4.2015, 0:48 |
|
|
27.4.2015, 15:36
Сообщение
#23
|
|
Странник Группа: Пользователь Сообщений: 16 Регистрация: 25.4.2015 Вставить ник Цитата Из: Сергиев Посад Пользователь №: 2805 Страна: Россия Город: Не указан Пол: Муж. Репутация: 0 |
Тут подумал и решил что пробелы нужно вернуть
Код #!/bin/sh
# замена пробелов на _ find -name "* *" | sort -r | while read i; do mv "$i" "$(dirname "$i")/$(basename "$i" | tr ' ' _)"; done # извлекаем звуковую дорожку find . -name "*.avi" -exec ffmpeg -i {} -vn -ar 44100 -ac 2 -ab 128 -f mp3 {}.mp3 \; # удаляем лишнее из названия файлов find . -name '*.mp3' -exec rename 's/.avi././' {} \; # нормализовать mp3 find . -iname '*.mp3' -exec mp3gain -r -c -s r {} \; #find . -iname '*.mp3' -exec normalize-audio -b {} \; # создаем список rm list_tmp.txt list_tmp2.txt find . -name "*.mp3" -exec echo {} >> list_tmp.txt \; cat list_tmp.txt | sed 's/.mp3//g' > list_tmp2.txt cat list_tmp2.txt | cut -c 3- > list.txt # вставляем звуковую дорожку for x in $(cat list.txt); do ffmpeg -i "${x}".mp3 -i "${x}".avi -vcodec copy -acodec copy "${x}"_norm.avi; done # удаляем все временные файлы find . -name *.mp3 -delete rm list.txt list_tmp.txt list_tmp2.txt # возвращаем пробелы find -name "*_*" | sort -r | while read i; do mv "$i" "$(dirname "$i")/$(basename "$i" | tr '_' ' ')"; done exit 0 |
|
|
27.4.2015, 23:15
Сообщение
#24
|
|
Профессионал Группа: Глоб. Модератор Сообщений: 10027 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: 30 |
И как, работает? Я потом обязательно у себя попробую; тоже есть что, так сказать, нормализовать, просто прямо сейчас не до этого, да и самой идеи не было, пока вы не подсказали
-------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
28.4.2015, 0:28
Сообщение
#25
|
|
Странник Группа: Пользователь Сообщений: 16 Регистрация: 25.4.2015 Вставить ник Цитата Из: Сергиев Посад Пользователь №: 2805 Страна: Россия Город: Не указан Пол: Муж. Репутация: 0 |
На небольшом количестве файлов (4-5) работает довольна быстро.
Сейчас я его запустил на выполнение на всю коллекцию. 5367 файлов это довольно много. Да и я ступил, надо было скрипт в скрине запустить. Теперь придётся комп включенным держать. |
|
|
29.4.2015, 22:18
Сообщение
#26
|
|
Странник Группа: Пользователь Сообщений: 16 Регистрация: 25.4.2015 Вставить ник Цитата Из: Сергиев Посад Пользователь №: 2805 Страна: Россия Город: Не указан Пол: Муж. Репутация: 0 |
На все про все ушло полутро суток.
скрипт не обработал 15 файлов почему не знаю. глюков в самих файлов пока не обнаружил ну в тех которых я просмотрел. |
|
|
30.4.2015, 14:12
Сообщение
#27
|
|
Профессионал Группа: Пользователь Сообщений: 1764 Регистрация: 28.7.2010 Вставить ник Цитата Из: Берислав, Херсонщина Пользователь №: 1879 Страна: Украина Город: Не указан Пол: Муж. Репутация: 9 |
Это, конечно, хорошо. Но не проще ли было бы вместо уродования двуковой дорожки в MP3, просто включить в видеопроигрывателе нормализацию звука?
-------------------- |
|
|
30.4.2015, 15:05
Сообщение
#28
|
|
Странник Группа: Пользователь Сообщений: 16 Регистрация: 25.4.2015 Вставить ник Цитата Из: Сергиев Посад Пользователь №: 2805 Страна: Россия Город: Не указан Пол: Муж. Репутация: 0 |
|
|
|
30.4.2015, 17:03
Сообщение
#29
|
|
Профессионал Группа: Пользователь Сообщений: 1764 Регистрация: 28.7.2010 Вставить ник Цитата Из: Берислав, Херсонщина Пользователь №: 1879 Страна: Украина Город: Не указан Пол: Муж. Репутация: 9 |
А, если для телевизора разве что. Я решил, что это подгоняется под просмотр на PC.
-------------------- |
|
|
8.5.2015, 22:36
Сообщение
#30
|
|
Странник Группа: Пользователь Сообщений: 16 Регистрация: 25.4.2015 Вставить ник Цитата Из: Сергиев Посад Пользователь №: 2805 Страна: Россия Город: Не указан Пол: Муж. Репутация: 0 |
Небольшой фикс.
Так как mp3gain по умолчанию нормализует на уровень громкости 89dB нам может быть или мало или много этого уровня. Чтобы это изменить нам нужно добавить ещё один ключ. Чтобы получить уровень скажем 95dB. Изменим эту строчку. Код find . -iname '*.mp3' -exec mp3gain -r -c -s r {} \; добавим такой ключ -d 6 в результате 89+6=95 а если нужно убавить то пишем -d -4 в результате 89-4=85. Ну во такой факс на 95dB Код find . -iname '*.mp3' -exec mp3gain -r -d 6 -c -s r {} \;
|
|
|
Текстовая версия | Сейчас: 19.4.2024, 23:56 | |