![[Top bar]](../../common/images/Topbar-ru.gif)
![[Bottom bar]](../../common/images/Bottombar-ru.gif) 
| эта страница доступна на следующих языках: English Castellano Deutsch Francais Nederlands Portugues Russian Turkce Arabic | 
| ![[Photo of the Author]](../../common/images/PhilipGroot.jpg)  автор Philip de Groot Об авторе: Скоро он получит Ph.D. по chemometrics в университете Неймегена. Ему нравится работать с Linux и передавать свой опыт, что он регулярно и делает. Содержание: | 
![[Illustration]](../../common/images/article178/image_art178.jpg) 
Резюме:
Заметка продолжает разговор начатый в предыдущей заметке о записи mp3 файлов в реальном времени, например радиотрансляций. В предыдущей заметке мы рассмотрели процесс создания большого mp3 файла (650 Mb - 12 часов или 1.3 Gb - 24 часа музыки CD качества (128 kbit/s; стерео)). Теперь перед нами встают такие вопросы - как его обработать, что лучше - создать еще больший файл или сжать данные. Также немного поговорим о качестве предоставляемым форматом mp3.
Короче говоря - не обойтись без программы способной редактировать
    сами mp3 файлы! Такие программы есть, но (в настоящее время) не под
    Linux. Достаточно много их под Windows, но у всех один большой недостаток -
    они не способны обрабатывать файлы такого размера - 650 Mb. Но мне все же
    удалось найти одну подходящую - 
    'Manns' mp3 edit'. Я использовал ее под Windows98. Графический интерфейс
    этой программы позволяет отметить нужное место исходного mp3 файла и
    скопировать его в другой файл командой 'trim'. Эта программа из категории
    'donationware', что означает не обязательную плату за нее, но при
    полезности ее для вас было бы неплохо за нее заплатить. Но и она не без
    изъянов - первый: ужасно медленная работа с такими большими файлами (650 Mb)
    и второй: способна обработать только файлы с постоянными частотами!!!
    Поиск последнего часового фрагмента в 24 часовом mp3 файле занимает очень
    много времени и сильно нагружает диск. Извлечение же нужного фрагмента
    наоборот - достаточно быстрое (и без потери mp3 качества). До сих пор
    я не обнаружил никаких проблем с воспроизведением mp3 файлов, созданных
    с помощью этого редактора. Тем не менее я всегда проверяю вырезанные
    фрагменты, помещая их  в mp3-редактор - если загрузка корректна - файл
    в порядке. Во время первых экспериментов я жал на кнопку 'trim' в период
    интенсивной работы программы с диском - вследствие чего портились файлы -
    их становиилось невозможно воспроизводить! Обработка файла размером 650 Mb
    занимает у меня примерно 1 час.
    
    Преимущество этого способа в низких требованиях, предъявляемых к
    процессору. Images уже созданы! Можно автоматизировать процесс с
    помощью небольшого скрипта: монтирование image, запись mp3, размонтирование
    после 12 часов записи, монтирование следующего image и продолжение записи
    и т.д. Я записал все диски вручную, потому что возникла проблема (правда
    всего один раз и была связана с носителем). Итак, я создал 4 images: 3
    были в запасе на случай возникновения проблем с записью CD (36 часов на
    решение проблемы). Скрипт, которым я пользовался, выглядит следующим образом:
    
    
#!/bin/sh
echo "loading modules for sound support..."
modprobe -k snd-card-sb16
modprobe -k snd-pcm-oss
modprobe -k snd-mixer-oss
echo "setting mixer..."
amixer set Line 31 unmute capture; amixer set Master 31; amixer set PCM 31
cd /where/ever/you/stored/the/images/
for i in 1 2 3; do
    for ii in 1 2 3 4; do
    echo "mounting image_$ii on /mnt ..."
        mount -t ext2 -o loop=/dev/loop1 image_$ii /mnt
        echo "starting mpegrec ..."
        mpegrec -b 128 -x -mj -o /mnt/top2000_$ii.mp3
    echo "umount /mnt"
        umount /mnt
    done
done
    Всю работу я проделал без XWindows, только Bash-prompt.
    Поддержка звука, эмуляция OSS и mixer были загружены вручную (конечно
    вы можете автоматизировать этот процесс посредством опций файла
    /etc/conf.modules). В 4-ой строке настраиваем mixer: источник записи-
    "линейный вход", громкость на максимум. После настройки скрипт управляет
    монтированием/размонтированием. Далее рассмотрим опции mpegrec: '-mj'
    указывает на joined stereo. Я ожидал, используя эту опцию, что файлы станут
    меньшего размера, но это оказалось не так - не имеет значения запиываете вы
    stereo или joined-stereo! В следующий раз я буду использовать ordinary
    stereo. Также было желание остановить 'mpegrec' после 12 часов записи.
    Я подправил исходники - поменял 24 на 12, но к сожалению запись продолжалась
    по-прежнему. Мне пришлось прерывать запись самому каждые 12 часов. Надо
    будет повнимательнее посмотреть на исходники...
    
Обратите внимание:
    Также возникли проблемы с самым свежим релизом cdrecord (cdrecord-1.9).
    Работа предыдущей версии была корректной. Эти проблемы были решены
    модернизацией firmware моего CD recorder - Philips CDD 3610, с 3.02 на
    3.09. Сначала я подумал, что проблемы записи дисков связаны с ядром 2.4.3,
    но это предположение также оказалось ошибочным!
     Наиболее интересные моменты:
#!/bin/bash echo "record $1 named ($3) for $2 seconds" aumix -f ~/.aumixrc /usr/bin/yes x | /usr/bin/radio $1 >/dev/null 2>/dev/null sox -V -r 44100 -c 2 -t ossdsp -w -s /dev/dsp -t wav - 2>/dev/null | lame - ~/$3.`/bin/date "+%H%M.%m-%d-%y"`.mp3 --resample 16 -b 8 -a -m m -h --lowpass 4 --highpass .12 --voice& sleep $2 kill -9 $! # copy the output to a different direcory. If you want you can # replace cp by rcp or scp and copy it to a different computer: cp $3.*`/bin/date "+.%m-%d-%y"`.mp3 /tmp/outputdir
Основная задача его - создание различаемой записи радиотрансляции ограниченной дисковым пространтсвом 3.5 Mb на час! Различаемая - значит записанная речь должна быть понятна. Естественно качество получается ужасное. В 1-ой строке настраиваем mixer, запускаем программу для карточки и 'sox'. Основная хитрость в опциях 'lame':
| --resample 16 | переопределяем частоту исходного файла с 44 kHz до 16 kHz. | 
| -b 8 | устанавливаем 8 kbit/s. | 
| -a | объединяем стерео потоки в моно запись. | 
| -m m | включаем моно mp3 кодирование. | 
| -h | включаем высококачественное mp3 кодирование (медленное). | 
| --lowpass 4 | устанавливаем фильтр нижних частот на 4 kHz (все сигналы выше этого предела будут удалены). | 
| --highpass .12 | устанавливаем фильтр верхних частот на 12 kHz (все сигналы ниже этого предела будут удалены). | 
| --voice | используем технологию mp3 сжатия адаптированную для речи. | 
Ясно, что для записи речи такое сжатие приемлемо. Но в большинстве случаев оно конечно не к чему. Тем не менее такая возможность есть!
#!/bin/sh /usr/local/bin/mpegrec \ -l 5400 \ -x '--preset fm \ --tt "Computers in Your Life" \ --tl "Open Line with Tom Wieble" \ --ta "Tom Wieble" --ty `date +%Y` \ --tg "Speech" \ --tc "Copyright (c) 1997 - `date +%Y` WOSU" -c' \ -o open_line_`date +%d%b%y`_`date +%H%M`.mp3
Опция '-l 5400' ограничиваем время записи 90 минутами. Все опции после '-x' перенаправляются 'lame' (строки с 4 по 9) и опция '-o' задает имя файла в виде 'date_and_time.mp3'. Эти строки могут быть изменены по желанию. Для этого не помешает более тесное знакомство с опциями 'lame'. Рассмотрим опции подробнее:
| --preset fm | Lame узнает некоторые стандартные установки. 'fm' для записи радиотрансляций. | 
| --tt "Computers in Your Life" | '--tt' название записи (30 символов максимум). | 
| --tl "Open Line with Tom Wieble" | '--tl': название альбома (30 символов максимум). | 
| --ta "Tom Wieble" --ty `date +%Y` | '--ta': исполнитель (30 символов максимум). | 
| --tg "Speech" | '--tg': жанр (название или номер). | 
| --tc "Copyright (c) 1997 - `date +%Y` WOSU" -c" | '--tc': комментарий (30 символов максимум). | 
Неплохой вариант для создания mp3 файлов, включающий дату и время и массу другой информации. Конечно надо потратить немного времени на это, но опять же, приятно видеть что есть такая возможность!
| 
 | 
| Webpages maintained by the LinuxFocus Editor team © Philip de Groot, FDL LinuxFocus.org Click here to report a fault or send a comment to LinuxFocus | Translation information: 
 | 
2001-05-13, generated by lfparser version 2.8