Помогите написать скрипт по перекодированию audio
GNU/Linux, UNIX, Open Source → Программное обеспечение
aivs
написал 29 мая 2005 года в 23:50 (1364 просмотра)
Ведет себя
как мужчина; открыл 114 темы в форуме, оставил 293 комментария на сайте.
Нужна помощь в написании маленького скрипта.
То что должен делать скрипт:
В каталоге лежат mp3 файлы с разным битрейтом.
Скрипт должен привести все файлы к битрйту 128, удалить все старый mp3, оставив только созданные им, а затем перекопировать это все в /mnt/flash/audio.
Помогите пожалуйста.
// Тему переместил(а) fly4life из форума «UNIX FAQ».
Последние комментарии
-
OlegL, 17 декабря 2023 года в 15:00 →
Перекличка
21
-
REDkiy, 8 июня 2023 года в 9:09 →
Как «замокать» файл для юниттеста в Python?
2
-
fhunter, 29 ноября 2022 года в 2:09 →
Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt?
6
-
Иванн, 9 апреля 2022 года в 8:31 →
Ассоциация РАСПО провела первое учредительное собрание
1
-
Kiri11.ADV1, 7 марта 2021 года в 12:01 →
Логи catalina.out в TomCat 9 в формате JSON
1
DevOps as a Service from Palark
24/7 SRE & DevOps service to cover all your Kubernetes needs.

#!/bin/sh echo "Convert MP3 files" for f in *.mp3 do # А ТУТ: # 1) запускаем lame чтобы перекодировал файл (читаем его ман) lame ... # 2) удаляем старый mp3 rm -f $f # 3) копируем новый в /mnt/flash/audio cp $f_new.mp3 /mnt/flash/audio/$f done echo "Done!"Огромное спасибо за скрипт, только вот с ламе не разобрался.
Чтобы просто понизить битрейт до 128 достаточно просто
lame «04 — A Lo Cubano.mp3» «04 — A Lo Cubano1.mp3»
Но в полученном файле отсутствует id3-tag, а он нужен.
Скрипт записал так:
#!/bin/sh
echo «Convert MP3 files»
for f in *.mp3
do
# А ТУТ:
# 1) запускаем lame чтобы перекодировал файл (читаем его ман)
lame $f $f_new
# 2) удаляем старый mp3
rm -f $f
# 3) копируем новый в /mnt/flash/audio
cp $f_new.mp3 /home/aivs/mp3/$f
done
echo «Done!»
А он говорит мне, мол кривой ты, и lame не умеешь пользоваться:
[aivs@localhost ~]$ ./mp3bit.sh
Convert MP3 files
lame: excess arg A
LAME version 3.96.1 (http://lame.sourceforge.net/)
usage: lame [options] [outfile]
and/or can be «-», which means stdin/stdout.
Try:
«lame --help» for general usage information
or:
«lame --preset help» for information on suggested predefined settings
or:
«lame --longhelp»
or «lame -?» for a complete options list
cp: `Cubano.mp3\′: specified destination directory does not exist
Попробуйте `cp --help' для получения более подробного описания.
Done!
[aivs@localhost ~]$
там этта. если в имени файла есть пробел — надо в нужных местах кавычки двойные расставить… ;)
#!/bin/sh
echo «Convert MP3 files»
for f in *.mp3
do
# 1) запускаем lame чтобы перекодировал файл
lame «$f» «$f_new»
# 2) удаляем старый mp3
rm -f «$f»
# 3) копируем новый в /mnt/flash/audio
cp «$f_new» «/home/aivs/mp3/$f»
done
echo «Done!»
Вот что у меня получилось, но все равно не полностью рабочее.
[aivs@localhost ~]$ ./mp3bit.sh
Convert MP3 files
ID3v2 found. Be aware that the ID3 tag is currently lost when transcoding.
LAME version 3.96.1 (http://lame.sourceforge.net/)
Using polyphase lowpass filter, transition band: 17249 Hz — 17782 Hz
Encoding 01 Intro.mp3 to 01 Intro.mp3.mp3
Encoding as 44.1 kHz 128 kbps j-stereo MPEG-1 Layer III (11x) qval=3
Frame | CPU time/estim | REAL time/estim | play/CPU | ETA
1358/1341 (100%)| 0:04/ 0:04| 0:04/ 0:04| 8.5894x|
0:00
average: 128.0 kbps LR: 73 (5.364%) MS: 1288 (94.64%)
Writing LAME Tag…done
ReplayGain: -5.5dB
cp: невозможно выполнить stat для `’: No such file or directory
Done!
[aivs@localhost ~]$
1) проблема в том что созданный файл не копируется куда надо с правильным названием
man cp около опции -v.
добавить оную с вызов и повторить.
что получится — рассказать
опцию -v добавил, но вывод остался тот же
cp: невозможно выполнить stat для `’: No such file or directory
у тебя файл называется несколько не так, как ты того ожидаешь.
м как ты того ему указываешь.
Я знаю, а как исправить то
где-то так написать скрипт:
#!/bin/sh echo "Convert MP3 files" for f in *.mp3 do f_new="${f%.mp3}_new.mp3" # 1) запускаем lame чтобы перекодировал файл lame "$f" "$f_new" # 2) удаляем старый mp3 rm -f "$f" # 3) копируем новый в /mnt/flash/audio cp "$f_new" "/home/aivs/mp3/$f" done echo "Done!"аааааааааааааа. в процессе написания, осенило, что у тебя не так :))
$f_new воспринимается как имя переменной, а не как добавление «_new» к содержимому $f… ;))
использовать надо запись «${f}_new»…
правда, уже несколько поздно ;)
Огроооооомнейшее спасибо, все работает отлично.
А не в курсе как id3tag сохранять в новом файле?
lame в начале перекодирования говорит
ID3v2 found. Be aware that the ID3 tag is currently lost when transcoding.
ну, пробуй одно из этих. может что ещё найдёшь сам..