Об авторе: Скоро он получит Ph.D. по chemometrics в университете Неймегена. Ему нравится работать с Linux и передавать свой опыт, что он регулярно и делает. Содержание: |
Резюме:
Заметка продолжает разговор начатый в предыдущей заметке о записи 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