Страница 1 из 3

Конвертация аудио

Добавлено: 26 мар 2003, 03:29
#!/bin/bash
Итак. У меня есть 3 ГБ музыки, а также есть желание перегнать ее в OGG Vorbis. Найти бы программу, которая проделала бы все это быстро и в автоматическом режиме.
Кто чего посоветует?

Добавлено: 26 мар 2003, 11:50
mend0za
такой программы врядли есть (apt-cache search по крайней мере молчит, а на freshmet лазить некогда)
но ее достаточно просто написать самому

берется mpg321, oggenc, id3ed, sed, find и твой любимый bash
с помощью mpg321 перекодируется в wav, id3ed для извлечения тегов, oggenc для перегона wav в ogg с прописыванием тегов, sed +find+bash (или perl) для создания скрипта который это делает для всех файлов и конвертации инфо о тегах.

получается прикольный скрипт, который не стыдно показать родным )

Добавлено: 26 мар 2003, 16:51
#!/bin/bash
У меня есть такой скрипт на Perl, и работает он именно так, как ты описал :) Но я еще не до конца понял, чего же он не пашет.. Сначала хотел perl-MP3-info - я ему дал, потом хочет еще какой-то модуль, которого у меня нет:-( Блин, неужели в 9-ти дисковом Мастере нет такой проги??? :lol:

Добавлено: 26 мар 2003, 17:05
Llama
Готов поспорить, что в -дисковом мастере есть все, чтобы ее написать самому.

Добавлено: 26 мар 2003, 17:13
mend0za
2 #!/bin/bash:
если так нужно переконвертить - исправь скрипт сам или найди того кто сможет это сделать

2 Llama: не могу с тобой не согласиться

Добавлено: 26 мар 2003, 17:18
Llama
#!/bin/bash писал(а):У меня есть такой скрипт на Perl, и работает он именно так, как ты описал :) Но я еще не до конца понял, чего же он не пашет.. Сначала хотел perl-MP3-info - я ему дал, потом хочет еще какой-то модуль, которого у меня нет:-( Блин, неужели в 9-ти дисковом Мастере нет такой проги??? :lol:


А какой-нибудь faq по перл ты почитать не пробывал? Там написано, что есть www.cpan.org и там есть всяческие модули в неограниченом количестве (ну очень много)

Добавлено: 27 мар 2003, 12:37
#!/bin/bash
Всем спасибо за советы :) Взял книжку по Perl и написал скриптик, который использует набор кодеков ffmpeg. Вот сижу, конвертирую :) Размер проги - 533 байта, коу надо - вышлю вложением :lol:

Добавлено: 27 мар 2003, 14:24
Llama
#!/bin/bash писал(а):Всем спасибо за советы :) Взял книжку по Perl и написал скриптик, который использует набор кодеков ffmpeg. Вот сижу, конвертирую :) Размер проги - 533 байта, коу надо - вышлю вложением :lol:
Он же маленький, клади сюда, обсудим ;)

Добавлено: 28 мар 2003, 09:42
#!/bin/bash
Программа пока очень сырая и я знаю, что ее можно сделать еще в 2 раза меньше :) Но со своей функцией справляется. Правда, ID3-теги пока не пишет, но я нашел 2 консольных утилы: mp3info и vorbiscomment. Они позволяют делать то, что нужно.. Если планы не поменяются, напишу сегодня. А пока - предлагайте пути по улучшению :)

#!/usr/bin/perl
system(qq(dirs > currectdir));
open(OF, "currectdir");
$direct=<OF>;
$direct =~ s/[\r,\n]//g;
$direct =~ s/~/root/g;
$direct = '/' . $direct;
system(qq(rm -f currectdir));
opendir(MP3DIR, $direct);
@FILES=grep(/\.mp3$/i, readdir MP3DIR);
for ( $a=0; $a<($#FILES+1); $a=$a+1 )
{
$filename=$FILES[$a];
$filename =~ s/.mp3/./g;
$to=$direct . '/' . $filename . 'ogg';
$from=$direct . '/' . $filename . 'mp3';
system(qq(ffmpeg -i '$from' '$to' -ab 64 -hq));
# system(qq(rm -f '$from'));
}
closedir(MP3DIR);

Добавлено: 28 мар 2003, 11:31
#!/bin/bash
Вот усовершенствованный вариант программы (версия 0.02:)). Она уже умеет переносить ID3-теги из MP3 в OGG. Реализовано все стандартными средствами: ffmpeg, mp3info и vorbiscomment (из пакета vorbis-tools). Никаких дополнительных Perl-модулей не требуется. Кстати, спасибо Llama за совет - программу можно прервать по Ctrl+C :) Вот исходник:

#!/usr/bin/perl
############################################
# Program ffmp32ogg #
# Version 0.02 #
# Author: #!/bin/bash #
# Program that converts all mp3-files in currect directory to OGG. #
# ffmp32ogg can save the ID3-tags too (Artist and Title yet) #
# Needs the following binaries: #
# ffmpeg (package: ffmpeg) #
# vorbiscomment (package: vorbis-tools) #
# mp3info (package: mp3info) #
# Special thanks to Linux.HiTECH.BY community for idea and support #
##############################################
system(qq(dirs > currectdir));
open(OF, "currectdir");
$direct=<OF>;
$direct =~ s/[\r,\n]//g;
$direct =~ s/~/root/g;
$direct = '/' . $direct;
system(qq(rm -f currectdir));
opendir(MP3DIR, $direct);
@FILES=grep(/\.mp3$/i, readdir MP3DIR);
for ( $k=0; $k<($#FILES+1); $k=$k+1 )
{
$filename=$FILES[$k];
$filename =~ s/.mp3/./g;
$to=$direct . '/' . $filename . 'ogg';
$from=$direct . '/' . $filename . 'mp3';
system(qq(ffmpeg -i '$from' '$to' -ab 64 -hq));
$artist=qx(mp3info '$from' -p %a);
$title=qx(mp3info '$from' -p %t);
if ($title != '')
{
system(qq(vorbiscomment -a '$to' -R -t "ARTIST=$artist" -t "TITLE=$title"));
}
# system(qq(rm -f '$from'));
}
closedir(MP3DIR);

Так, что еще с ней сделать? (мне кажется, что все это закончится графическим интерфейсом:)) Кстати, я решил, что эта программа станет моей курсовой работой по информатике (вместе с сайтом поддержки:)) Так что предлагайте новые функции и дополнения.

Добавлено: 28 мар 2003, 11:58
mend0za
из возможных улучшений - проверка на существование ffmpeg, vorbiscomment и mp3info с завершением программы, если они не существуют

Добавлено: 28 мар 2003, 12:44
Llama
А затем perl-gtk, gtkxml .... :)

Добавлено: 28 мар 2003, 16:27
#!/bin/bash
[uNIx]mend0za писал(а):из возможных улучшений - проверка на существование ffmpeg, vorbiscomment и mp3info с завершением программы, если они не существуют
Если она не найдет ffmpeg, то сама завершится :) Конечно, сначала пройдется по всему списку, а потом уже завершится.. А отсутствие mp3info и vorbiscomment не смертельно. Файлы перегоняться все равно будут.
Но проверку все равно вставлю, спасибо за идею.

Добавлено: 28 мар 2003, 18:38
mend0za
lynxer правильно заметил, что для данной задачи более органичен bash, чем perl.
здесь нет особо обработки данных и работы с текстом.
просто создание связки между несколькими приложениями

Добавлено: 28 мар 2003, 20:14
#!/bin/bash
Я не умею писать на bash, поэтому пишу на чем умею :lol: