Помогите написать скрипт по перекодированию audio
GNU/Linux, UNIX, Open Source → Программное обеспечение
aivs
написал 29 мая 2005 года в 23:50 (1257 просмотров)
Ведет себя
как мужчина; открыл 114 темы в форуме, оставил 293 комментария на сайте.
Нужна помощь в написании маленького скрипта.
То что должен делать скрипт:
В каталоге лежат mp3 файлы с разным битрейтом.
Скрипт должен привести все файлы к битрйту 128, удалить все старый mp3, оставив только созданные им, а затем перекопировать это все в /mnt/flash/audio.
Помогите пожалуйста.
// Тему переместил(а) fly4life из форума «UNIX FAQ».
Последние комментарии
- OlegL, 17 декабря в 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
ecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.
Огромное спасибо за скрипт, только вот с ламе не разобрался.
Чтобы просто понизить битрейт до 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
у тебя файл называется несколько не так, как ты того ожидаешь.
м как ты того ему указываешь.
Я знаю, а как исправить то
где-то так написать скрипт:
аааааааааааааа. в процессе написания, осенило, что у тебя не так :))
$f_new воспринимается как имя переменной, а не как добавление «_new» к содержимому $f… ;))
использовать надо запись «${f}_new»…
правда, уже несколько поздно ;)
Огроооооомнейшее спасибо, все работает отлично.
А не в курсе как id3tag сохранять в новом файле?
lame в начале перекодирования говорит
ID3v2 found. Be aware that the ID3 tag is currently lost when transcoding.
ну, пробуй одно из этих. может что ещё найдёшь сам..