Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок
Модераторы: vadim64, terminus
Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
pimlab
- прапорщик
- Сообщения: 483
- Зарегистрирован: 2007-10-09 11:31:03
Непрочитанное сообщение
pimlab » 2016-11-02 15:32:39
Решил тут свою фильмотеку привести в порядок.
На просторах нета выкопал и собрал скрипт,который пережимает и выравнивает звук у конечного ролика, но вот не задача где-то теряется точка и ffmpeg сxодит с ума.
по порядку..
Код: Выделить всё
#! /bin/sh
dir="./2007/"
for ext in AVI avi; do for file in $dir*.$ext;
do
volumeinfo=$(ffmpeg -hide_banner -i "$file" -af volumedetect -vn -f null /dev/null 2>&1)
vfvol=$(echo "$volumeinfo" | sed -nr '/max_volume:/ s/.*[[:space:]]-?([[:digit:]\.]+)[[:space:]]+dB$/\1/p')
echo "$file volume=${vfvol}"
/usr/local/bin/ffmpeg -hide_banner -i "$file" \
-c:v libx264 -preset veryslow -crf 20 -pix_fmt yuv420p -y \
-tune film -profile:v high \
-map_metadata 0 -vf smartblur \
-metadata:s:a:0 language=rus -metadata:s:v:0 language=rus \
-c:a libfdk_aac -b:a 128k \
-ar 44100 -af "volume="${vfvol}"dB" \
-f mp4 $dir"$(basename "$file" .$ext).mp4"
как и положено
на тeстовом ролике выводит "тест.avi volume=5.4"
Но далее в config ffmpeg уже подставляет 5 4 без точки и ffmpeg уже работает не верно... 4 для него выходной фаил.
почему теряется точка?
pimlab
-
Хостинг HostFood.ru
-
Хостинг HostFood.ru
Тарифы на хостинг в России, от 12 рублей:
https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.:
https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах:
https://www.host-food.ru/domains/
-
BlitzKrieg
- ст. прапорщик
- Сообщения: 538
- Зарегистрирован: 2008-03-13 12:02:59
Непрочитанное сообщение
BlitzKrieg » 2016-11-03 9:58:00
Попробуйте поменять . на \. например.
В общем и целом я бы попробовал эту строчку повыполнять разным образом экранируя . с целью добиться искомого результата без скрипта.
BlitzKrieg
-
pimlab
- прапорщик
- Сообщения: 483
- Зарегистрирован: 2007-10-09 11:31:03
Непрочитанное сообщение
pimlab » 2016-11-03 10:24:27
BlitzKrieg писал(а):Попробуйте поменять . на \. например.
В общем и целом я бы попробовал эту строчку повыполнять разным образом экранируя . с целью добиться искомого результата без скрипта.
Где экранировать?
Мы видимо друг друга не поняли...
По ходу выполнения скрипта получаю
в консоли "тест.avi volume=5.4"
а далее он вставляет
если вписать руками ,то само собой все отрабатывает
, но ведь цель автоматизировать
попробуйте у себя запустить
pimlab
-
BlitzKrieg
- ст. прапорщик
- Сообщения: 538
- Зарегистрирован: 2008-03-13 12:02:59
Непрочитанное сообщение
BlitzKrieg » 2016-11-03 10:52:21
Я все правильно понял. Попробуйте сделать так, чтобы у вас переменная vfvol содержала \. т.е. чтобы echo "${vfvol}" выводило 5\.4.
Отправлено спустя 12 минут 14 секунд:
И да, было бы лучше, если после /bin/bash была бы пустая строка :-) mc тогда подсвечивает :-)
BlitzKrieg
-
BlitzKrieg
- ст. прапорщик
- Сообщения: 538
- Зарегистрирован: 2008-03-13 12:02:59
Непрочитанное сообщение
BlitzKrieg » 2016-11-03 11:15:28
У вас там натурально sh или какой интерпретатор? Я попробовал с враппером+бузибокс и эффекта такого не достиг.
BlitzKrieg
-
pimlab
- прапорщик
- Сообщения: 483
- Зарегистрирован: 2007-10-09 11:31:03
Непрочитанное сообщение
pimlab » 2016-11-03 11:19:37
если кому надо, то вот конечный работаюший скрипт
Код: Выделить всё
#! /bin/sh
dir="./2007/"
for ext in AVI avi; do for file in $dir*.$ext;
do
volumeinfo=$(ffmpeg -hide_banner -i "$file" -af volumedetect -vn -f null /dev/null 2>&1)
vfvol=$(echo "$volumeinfo" | sed -nr '/max_volume:/ s/.*[[:space:]]-?([[:digit:]\.]+)[[:space:]]+dB$/\1/p' | sed /[.]/\. /)
echo "$file volume=${vfvol}"
/usr/local/bin/ffmpeg -hide_banner -i "$file" \
-c:v libx264 -preset veryslow -crf 20 -pix_fmt yuv420p -y \
-tune film -profile:v high \
-map_metadata 0 -vf smartblur \
-metadata:s:a:0 language=rus -metadata:s:v:0 language=rus \
-c:a libfdk_aac -b:a 128k \
-ar 44100 -af "volume="${vfvol}"dB" \
-f mp4 $dir"$(basename "$file" .$ext).mp4"
Отправлено спустя 2 минуты 12 секунд:
BlitzKrieg писал(а):У вас там натурально sh или какой интерпретатор? Я попробовал с враппером+бузибокс и эффекта такого не достиг.
чтото мне кажется это из-за UTF в консоли.
с bash таже песня
pimlab