nixp.ru v3.0

22 мая 2017,
понедельник,
20:32:55 MSK

DevOps с компанией «Флант»
Аватар пользователя aivs
aivs написал 29 мая 2005 года в 23:50 (809 просмотров) Ведет себя как мужчина; открыл 114 темы в форуме, оставил 292 комментария на сайте.

Нужна помощь в написании маленького скрипта.

То что должен делать скрипт:

В каталоге лежат mp3 файлы с разным битрейтом.

Скрипт должен привести все файлы к битрйту 128, удалить все старый mp3, оставив только созданные им, а затем перекопировать это все в /mnt/flash/audio.

Помогите пожалуйста.

// Тему переместил(а) fly4life из форума «UNIX FAQ».

Master


#!/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!"
aivs

Огромное спасибо за скрипт, только вот с ламе не разобрался.

Чтобы просто понизить битрейт до 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 ~]$

Genie

там этта. если в имени файла есть пробел — надо в нужных местах кавычки двойные расставить… ;)

aivs

#!/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) проблема в том что созданный файл не копируется куда надо с правильным названием

Genie

man cp около опции -v.

добавить оную с вызов и повторить.

что получится — рассказать

aivs

опцию -v добавил, но вывод остался тот же

cp: невозможно выполнить stat для `’: No such file or directory

Genie
Encoding 01 Intro.mp3 to 01 Intro.mp3.mp3

у тебя файл называется несколько не так, как ты того ожидаешь.

м как ты того ему указываешь.

aivs

Я знаю, а как исправить то

Genie

где-то так написать скрипт:

#!/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»…

правда, уже несколько поздно ;)

aivs

Огроооооомнейшее спасибо, все работает отлично.

А не в курсе как id3tag сохранять в новом файле?

lame в начале перекодирования говорит

ID3v2 found. Be aware that the ID3 tag is currently lost when transcoding.

Genie

ну, пробуй одно из этих. может что ещё найдёшь сам..

$ apt-cache search id3 tag '(edit|manip)'
easytag - viewing, editing and writing ID3 tags of MP3 files
id3 - An ID3 Tag Editor
id3ed - Another id3 tag editor
libid3-3.7-13 - Library for manipulating ID3v1 and ID3v2 tags.
libid3-dev - ID3 Tag Library: Development Libraries and Header Files.
id3tool - A command line editor for id3 tags.
id3v2 - A command line id3v2 tag editor
libid3tag0-dev - ID3 tag reading library from the MAD project
libid3tag0 - ID3 tag reading library from the MAD project
mp3blaster - Full-screen console mp3 and ogg vorbis player
mp3info-gtk - MP3 info viewer and ID3 1.x tag editor -- GTK version
mp3info - An MP3 technical info viewer and ID3 1.x tag editor.
mpgtx - Toolbox to manipulate MPEG files (video, system, and audio)
python-id3 - Python module for id3-tags manipulation