Об авторе:

Скоро он получит Ph.D. по chemometrics в университете Неймегена. Ему нравится работать с Linux и передавать свой опыт, что он регулярно и делает.


Содержание:

Создание записей в формате mp3, часть 2

Резюме:

Заметка продолжает разговор начатый в предыдущей заметке о записи mp3 файлов в реальном времени, например радиотрансляций. В предыдущей заметке мы рассмотрели процесс создания большого mp3 файла (650 Mb - 12 часов или 1.3 Gb - 24 часа музыки CD качества (128 kbit/s; стерео)). Теперь перед нами встают такие вопросы - как его обработать, что лучше - создать еще больший файл или сжать данные. Также немного поговорим о качестве предоставляемым форматом mp3.



 

Редактирование mp3 файлов

Представьте, что вы сделали прекрасную 24-х часовую запись (например Eighties Top 300 передаваемые Loostad radio), и хотели бы разделить ее на более мелкие части. Также неплохо было бы удалить рекламу и новости. Как это все сделать? Предлагаю один из вариантов:
Теоретически все правильно и даже более того - возврат из wav в mp3 с тем же алгоритмом не ухудшает качества записи. На самом деле, на практике, возникают проблемы:

Короче говоря - не обойтись без программы способной редактировать сами mp3 файлы! Такие программы есть, но (в настоящее время) не под Linux. Достаточно много их под Windows, но у всех один большой недостаток - они не способны обрабатывать файлы такого размера - 650 Mb. Но мне все же удалось найти одну подходящую - 'Manns' mp3 edit'. Я использовал ее под Windows98. Графический интерфейс этой программы позволяет отметить нужное место исходного mp3 файла и скопировать его в другой файл командой 'trim'. Эта программа из категории 'donationware', что означает не обязательную плату за нее, но при полезности ее для вас было бы неплохо за нее заплатить. Но и она не без изъянов - первый: ужасно медленная работа с такими большими файлами (650 Mb) и второй: способна обработать только файлы с постоянными частотами!!! Поиск последнего часового фрагмента в 24 часовом mp3 файле занимает очень много времени и сильно нагружает диск. Извлечение же нужного фрагмента наоборот - достаточно быстрое (и без потери mp3 качества). До сих пор я не обнаружил никаких проблем с воспроизведением mp3 файлов, созданных с помощью этого редактора. Тем не менее я всегда проверяю вырезанные фрагменты, помещая их в mp3-редактор - если загрузка корректна - файл в порядке. Во время первых экспериментов я жал на кнопку 'trim' в период интенсивной работы программы с диском - вследствие чего портились файлы - их становиилось невозможно воспроизводить! Обработка файла размером 650 Mb занимает у меня примерно 1 час.

 

Еще более продолжительные записи (>24 часов)

Никаких особенных проблем не возникает при записи 24 часовой радиотрансляции - файл получается достаточно компактный (1.3 Gb) для записи на жесткий диск. Проблемы могут возникнуть при записи более продолжительных трансляций, например целой недели. Возможно, в таком случае, у вас просто не хватит дискового пространства. У меня такая проблема возникла во время трансляции 'Alltimes Top 2000' на Рождество и Новый год 2000 (144 часа музыки), которые передавала Radio 2. Мой жесткий диск оказался слишком маленьким и мне пришлось искать решение для такой ситуации. Вот мой рецепт:
Таким образом мне удалось записать полностью Top2000. Идея возникла при чтении CD-Burning-Howto и ниже расскажу детальнее:


Преимущество этого способа в низких требованиях, предъявляемых к процессору. 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, но это предположение также оказалось ошибочным!

 

Качество mp3 записей

На странице отзывов моей предыдущей заметки кто-то оставил ссылку на сайт (http://www.r3mix.net/), где я обнаружил интересную информацию о mp3 записях - качество и т.д. на основе программы 'lame'.


Наиболее интересные моменты:

Обо всем этом можно подробно почитать на вышеупомянутом сайте!  

Максимальное уменьшение mp3 записей

Ниже рассмотрим небольшой скрипт, присланный мне по e-mail читателем.


#!/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 -b 8 -a -m m -h --lowpass 4 --highpass .12 --voice
--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 сжатия адаптированную для речи.

Ясно, что для записи речи такое сжатие приемлемо. Но в большинстве случаев оно конечно не к чему. Тем не менее такая возможность есть!

 

Стандартный скрипт для создания mp3 записей

Этот скрипт также был получен чрез TalkBack pages (я благодарен за это и несомненно каждый получит выгоду от этой информации!). Это полезная сторона страницы отзывов. Любой читатель может поделиться своим опытом, спросить совет и если коротко - различная информация собирается в одном месте и доступна всем! Скрипт называется 'mp3_record':

#!/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 файлов, включающий дату и время и массу другой информации. Конечно надо потратить немного времени на это, но опять же, приятно видеть что есть такая возможность!

 

Страница отзывов

У каждой заметки есть страница отзывов. На этой странице вы можете оставить свой комментарий или просмотреть комментарии других читателей.
 talkback page 

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:
nl -> -- Philip de Groot
nl -> en Philip de Groot
en -> ru Kirill Poukhliakov

2001-05-13, generated by lfparser version 2.8