"Агата Кристи" и маленький детектив с кодеками

Нашел в своих музыкальных завалах купленный в 1998 году диск группы «Агата Кристи» со всеми их вышедшими на тот момент альбомами (а позднее они, имхо, ничего путного и не записали). Захотел послушать, да не тут-то было: песни закодированы каким-то древним кодеком (mpeg-2.5), причем файлы почему-то имеют расширение wav. Любимый проигрыватель

mpg123 *.wav

воспроизводить такое отказался. Воспроизвел mplayer, но у меня на mpg123 завязана целая система, так что решил перекодировать. Особого труда это не составило и об этом не стоило бы писать, если бы не автоматизация с помощью bash-скрипта.

Файлы имели названия по шаблону 101.wav, 102.wav… 511.wav, т.е. номер альбома и номер песни. Для конвертации всех файлов был сооружен такой однострочник:

for i in `ls | egrep -o -e'[0-9]+'`; do ffmpeg -i $i.wav -acodec mp2 $i.mp3 ; done ; rm *.wav
,
который и справился с задачей за считаные минуты. Распишу скрипт более подробно:


# Самая сложная строка - первая. В ней объявляется цикл с переменной i,
# которая принимает список значений, создаваемой командой ls (перечислить 
# файлы в текущем каталоге). Поскольку нас интересуют только имена файлов, 
# фильтруем их командой egrep, вычленяющей только часть, содержащую 
# цифры - [0-9]+. Ключ -o нужен для вывода только найденного соответствия,
# а не всего имени файла.

for i in `ls | egrep -o -e'[0-9]+'`
do 
    ffmpeg -i $i.wav -acodec mp2 $i.mp3
done 
rm *.wav
  • +13
  • 22 августа 2010, 00:31
  • yababay

Комментарии (3)

RSS свернуть / развернуть
+
0
Неплохо,
ffmpeg тоже часто использую для перекодирования видео
avatar

Sergei_T

  • 22 августа 2010, 10:26
+
0
Тут хотелось показать не столько приемы работы с ffmpeg, сколько с bash-скриптами: цикл, динамические списки, регулярные выражения. Пример наглядный, т.к. имена файлов простые, хорошо фильтруются.
avatar

yababay

  • 22 августа 2010, 12:18
+
0
Круто!
avatar

Markony

  • 22 августа 2010, 12:26

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.