Главная > Програмное обеспечение > Мультимедийное >
Что нам стоит MPEG построить

Что нам стоит MPEG построить

Формат MP3, который позволяет хранить цифровую музыку в сжатом виде, пользуется заслуженной популярностью среди владельцев компьютеров. Преобразованием музыки с обычных компакт-дисков, да и вообще, хоть с магнитофонной ленты, если уж на то будет желание, может заниматься каждый, более-менее способный грамотно работать с компьютером. В этой статье делается попытка рассказать о том, как сделать MP3-файл, не получая предварительно диплома по computer science, и в каком случае это имеет смысл делать.

Прежде всего, вопреки представлениям большинства тех, кто не занимался оцифровкой звука с CD, это можно (и должно) делать без звуковой карты. Можно, конечно, и через звуковую карту - но качество будет ниже среднего. Представьте искажения, вносимые преобразователем цифра-аналог самого CD-привода, потом все это проходит через дешевенькую звуковую карточку... в общем, такой вариант обычно не используется, уж поверьте.

А используются специальные программы (о них ниже) и CD-проигрыватели (CD-приводы), позволяющие считывать музыку в цифровом виде. Такая способность называется поддержкой формата CDDA (compact disk digital audio). Или еще иногда reading raw data - чтение трека в цифровом виде. Эта особенность есть практически у всех современных приводов, тем более с интерфейсом SCSI. Как узнать о этой особености при покупке привода? Прежде всего, спросить у продавца. Если продавец сделает недоуменное лицо - можете показать ему свою спину, с этим лицом его и оставив. Пусть он идет продавать что-то другое. Если оставлять продавца вы не хотите по причине небольшой цены изделия, посмотрите фирму-изготовителя - если это Toshiba или Panasonic, можете брать. Практически все приводы этих фирм выпускаются с поддержкой CDDA. Полной статистики по этому вопросу нет, но примерно можно сказать так: если скорость выше 12х, то велика вероятность, что купив - не ошибетесь.

Итак, у вас есть привод CD-ROM и компакт-диск с музыкой, которую вы хотите в итоге иметь в формате MP3. Сначала звук с аудиодиска нужно перегнать в WAV-файлы - это первый этап на пути превращения звука. Программы для "сдирания" треков (композиций) с CD мы обсудим позже, а сейчас поговорим немного о том, что с этими WAV-файлами нужно будет делать и почему.

Умные люди придумали MPEG-сжатие для того, чтобы сократить объем звукового файла, который получается в результате оцифровки аналогового сигнала. А получается он довольно большой. При качестве CD (то есть том, с которым в действительности записан звук на обычном компакт-диске) объем файла составит примерно 10 мегабайт на минуту. При этом звук будет обладать следующими характеристиками: стерео, 16 бит на отсчёт (на канал), причём отсчётов делается 44100 в секунду, то есть частота квантования - 44.1 КГц.

Почему отсчеты при квантовании делают 16-битными и что это вообще такое?

Оцифровка звука - это измерение амплитуды электрического сигнала с определённой регулярностью и запись полученных цифр. Каждое измерение (отсчёт) представляется в виде 16-битного двоичного числа (два байта, то бишь), а случаются измерения за одну секунду 44100 раз.

Откуда взялись эти пресловутые 16 бит? Скажем так, при преобразовании аналог-цифра-аналог нужно обеспечить детальность представления сигнала такой, чтобы погрешность в 1 бит не была слышна ухом - вот как раз 16 бит для этого достаточно. Что же касается частоты квантования в 44.1 КГц, то существует теорема Котельникова, доказывающая, что отсчёты необходимо делать минимум в два раза чаще самой высокой частоты в сигнале. Если считать, что 22.05 КГц - максимум, слышимый ухом, то как раз 44.1 КГц и выйдет. (Вообще, существуют еще стандарты на частоту квантования 48кГц и 32кГц, но мы остановимся на 44,1кГц, как применяемом для компакт-дисков.)

Однако, это справедливо для музыки, записанной с хорошим качеством. Если оцифровывать только голос, то 44кГц для него будет много, да и стерео, согласитесь, не так надо, да и 8 бит на канал вполне хватит. Считается, что голос лежит в пределах от 1 до 4кГц, т.е. оцифровывать надо с частотой 8кГц. Получаем в 20 раз меньший размер - 1 минуту голоса можно уместить в 500кб чистого WAV файла. Качество будет совсем не то, что у музыки, но зато объем даже неупакованного файла куда меньше.

Посчитаем. 44.1КГц, да 16 бит, да еще и стерео - получается... 44100 (отсчётов в секунду) * 2 (байта) * 2 (канала) = 176400 байт в секунду. Итого 172.3 Кбайта в одной секунде звука. На компакт диске этих секунд более 4440, вот и получается целых 747 Мб.

Так. Что имеем? Имеем 10 мегов в одной минуте. Почти не пакуемых обычными паковщиками (типа WinZip) по той причине, что в WAV-файле нет избыточной с точки зрения математических методов упаковки информации.

MPEG (Motion Pictures Expert Group) - группа при ISO/IEC (Международная организация по стандартизации и Международный электрический комитет). Занимается разработкой стандартов для цифрового сжатия видео и аудиоинформации

Поэтому сжать WAV-файл обычным паковщиком можете и не пытаться - толку особого не будет.

Что делать? Остается одно - сжимать MPEG'ом, который специально для этого придуман. Он жмет с потерей информации. То есть, говоря другими словами, сжав с помощью MPEG-а звуковой файл и распаковав его обратно, вы не получите точного соответствия результата оригиналу. Но этого, на самом деле, и не нужно. Нужно, чтобы искажения, вносимые сжатием, не были заметны на слух.

Что делает MPEG-компрессия со звуком? В частности, что с ним делает MPEG-1 Layer 3, в простонародии "MP3"?

Сами стандарты MPEG разбиты на несколько подформатов: MPEG-1, MPEG-2 и MPEG-4. В нашем случае используется Audio MPEG-1. Как раз он и определяет кодирование монофонического и стереофонического звука на частотах, используемых для звука высокого качества - 48, 44.1 и 32кГц.

Если совсем просто, то это сжатие можно представить таким образом. Допустим, вас стукнули по башке. Что будет? Правильно, башка загудит. Услышите вы в это время жужжание мухи? Вряд ли, гул будет все заглушать. Вот и MPEG построен примерно на таком принципе - выкидываются звуки, "неслышимые" из-за других, так называемых "маскирующих". Кстати, не всегда более громких. К примеру, сигнал с одинаковой амплитудой вы можете слышать по-разному (то есть, громче или тише), в зависимости от его частоты. И еще момент: низкие частоты можно кодировать как монофонический сигнал, потому что они не влияют сколь-нибудь ощутимо на пространственную картину звука.

А вот дальше идет уже сжатие какой-нибудь математикой. На практике - это классический метод кодирования Хаффмана. Не буду вдаваться в подробности, но он приносит (вернее, уносит) еще 20% от общего объема.

Естественно, существует зависимость между тем, сколько данных выкидывать, как выкидывать, и качеством и размером получившегося файла. Например, существуют разные модели кодирования для работы со стереозвуком. Ведь можно каждый канал кодировать отдельно, а можно и вместе. А теперь представьте, что в одном канале тишина, а в другом идет насыщенный звук. Что, тишину будем усиленно кодировать? Конечно, можно часть потока в канале тишины "отдать" другому каналу, существенно улучшив общее качество. А можно сделать так: вычислить разность между каналами, вычислить среднюю составляющую и кодировать ее как один поток с одной скоростью, а разностную составляющую как другой поток, но уже с меньшей. Этот метод называется JointStereo. Применяется и был специально разработан для потоков с малой скоростью. В принципе, он себя оправдывает, если каналы по фазе совпадают. В большинстве случаев на компактах дело именно так и обстоит.

Итак, жать можно в 25 раз, а можно в 6. В первом случае получаем совсем низкое качество, а во втором случае - качество хорошее (практически неотличимое от оригинального компакт-диска), но уж больно велик выйдет файл: из 600 мегабайт несжатого звука - 100 Мб сжатого. Это многовато. Но! Если вы хотите передать ваш любимый диск другу, который совсем далеко, куда только самолетом, и то не во все дни, но зато у него есть интернет - тут сжатие с высшим качеством очень даже подойдет. Есть разница - пересылать 600 или 100 Мб по почте или ftp. А друг, получив вашу "посылку", просто переведет эти MP3-файлы обратно в WAV и запишет на компакт-диск, благо CD-рекордеры есть везде, а создать звуковой CD из WAV-файлов несложно, это делается в большинстве программ для записи компакт-дисков. Там прямо опция есть - "создаем Audio CD" - выбираешь WAV файлы, которые писать хочешь и вперед. Не верите? Да так уже давно все делают (см. статью "Записываем собственный audio CD" - прим. ред.). Хотя, с другой стороны, если много времени проводишь за компьютером, можно и не переводить MPEG-и обратно в WAV, а как есть записать на компакт. Нельзя будет слушать на аудиоаппаратуре, зато на один диск войдет минимум 6 обычных звуковых CD.

Теперь вернемся к нашему разговору о качестве MP3.

Качество для звука, сжатого MPEG-ом, измеряется в битах (килобитах) в секунду (далее - скорость потока или просто поток).

Звуковой поток считывается с диска со скоростью 1440 Кбит/сек. Сжимая с помощью MPEG в 11-12 раз, мы получаем 128 Кбит/с, а сжимая в 5-6 раз - 256 Кбит/с. У вас модем на сколько Кбит/с? Ах, вы сами - провайдер и сидите на канале в 10 Мбит/с? Нет, это плохой пример... Положим, у вас 33.600, т.е. 33.6 Кбит/с. Поскольку 33.6 меньше 128, в реальном времени вы приличного качества MPEG-музыку через интернет не послушаете. Это не для нас. Для нас - это покупка винта на несколько гигабайт и коллекционирование музыки, выкачанной из интернета. Тоже ничего так занятие :)

На 1Гб при качестве 128 Кбит/с влезает 18,2 часа музыки. То есть 64 секунды на мегабайт. Ну, соответственно, при качестве 256 Кбит/с - только 9,1 часа.

Существует этакая стандартная шкала качеств/скоростей. От, скажем, 24 Кбит/с до 320 Кбит/с. Пожалуй, 256 Кбит/с (сжатие в 6 раз) считается самым приемлемым качеством практически для всех типов музыки. При этом качестве даже опытные слушатели не могут отличить MPEG от оригинального CD. При 128 Кбит/с отличить способны уже многие. Хотя качество кажется вполне нормальным. При более низкой скорости (112 Кбит/с) качество заметно ухудшается, а при более высокой (140 Кбит/с) качество увеличивается не настолько сильно, чтобы поступаться объемом файла. Поэтому скорость 128 Кбит/с и стала стандартом де-факто для сжатия музыки.

Вот такая предыстория. Теперь вам самим представится случай выбрать между качеством и объемом файла.

Итак, у вас есть компакт, который вы хотите перегнать в MP3 и выложить на свою страничку, чтобы порадовать своим трафиком любимого провайдера, или вы просто взяли на время компактик-другой у друга и желаете переписать себе на компьютер, дабы послушать как-нибудь на досуге.

Кроме компакта, естественно, необходим свободный объем дискового пространства. Проверьте, сколько у вас его в наличии? Расчеты ведутся из соотношения 10 Мб = 1минута чистого звука. Если композиция занимает к примеру, 5 мин. 40 сек., то места нужно отводить 53 Мб. Именно такого размера будет WAV-файл, переписанный с компакта. В действительности, существуют и программы, которые производят кодирование "на лету", т.е. пока идет считывание информации с компакта. Им, естественно, не нужны огромные промежуточные файлы, и разумеется, кодирование занимает не больше времени, чем звучит в действительности сама музыка, то есть происходит в реальном времени.

Но мы пока пойдем более тяжелым путем, так как он наиболее показателен. К этому есть еще причины, но о них позже.

Теперь вам понадобится программа, которая позволила бы "снять" с компакта нужную дорожку с песенкой. Программ, предназначенных для этого, много. Наиболее популярные:

  • Audiograbber;
  • Cdex - он умеет кодировать "на лету";
  • WinDAC - едва ли не самый популярный рипер;
  • Для юниксоидов можно посоветовать Krabber.

Музыка будет сбрасываться с компкта со скоростью самого CD-ROM-привода, то есть как обычный файл, а не столько же времени, сколько звучит песня.

Пользоваться риперами (от англ. rip - передирать, иначе их называют grabber, что почти тоже самое) несложно, обычно достаточно указать номер трека (или весь диск), каталог, куда будут сбрасываться данные и, может быть, скорость, на которой будет производиться передирание. WinDAC, например, позволяет выставить скорость для тех случаев, когда система не успевает записывать данные на жесткий диск (по разным причинам, но так бывает). Со скоростью 4х (~600кбайт/с) в большинстве случаев все работает хорошо . После того, как файл лежит на диске, для очистки совести прослушайте его немного любым проигрывателем (да хоть WinAmp'ом - он играет WAV-файлы) - заодно и размер проверите.

Все. У нас есть большой файл, который мы хотим сжать. Вот теперь я обращу ваше внимание на все написанное раннее о скорости потока и характеристиках файлов. Вам нужно решить, что для вас более важно: качественная (как на CD) музыка или небольшие по объему файлы? Если вам некуда девать место на винтах или у вас небольшая фабрика по производству чистых болванок для пишущего CD-ROM - можете смело выбирать первый вариант: выиграете всего в 6 раз по объему, зато по качеству не проиграете никак. Это, как я уже упоминал, будет выбор потока в 256 кбит/сек (т.е. по 128 кбит/с на канал). Более распространенный вариант - жать в 128 кбит/с (т.е. по 64 кбит/с на канал), что даст вам вдвое меньший объем файлов.

Я не буду заводить отдельного разговора про скорости потока ниже 128кбит/с, которые используются для обработки речи, где качество не нужно, да и к тому же, обычно, когда оцифровываешь голос, источник в большинстве случаев никак не компакт. Скорее, магнитофон - а там несколько другая история.

Кодеров (так называют программы, которые превращают огромный звуковой файл формата WAV в желанный MP3) существует огромное множество, но вот к ним относятся при выборе с большим пристрастием, чем к риперам. Потому как от качества самого кодера в существенной степени зависит и качество звучания получившегося MP3 файла. Одним из лучших для использования на потоках до 128 Кбит/с считается Fraunhofer MPEG Producer Pro. Управление достаточно простое, необходимо лишь помнить, что нужно установить в меню флажок "high quality" - это замедляет кодирование, на размере не сказывается, а качество получается выше. Тем, кто выбрал путь 256 Кбит/с, рекомендую пользоваться кодером BladeENC. Он лучше MPEG Producer'а на потоках быстрее 160 Кбит/с.

Кстати, если вы еще не определились, что вам больше всего подходит - покодируйте какой-нибудь характерный кусочек песни разными кодерами с разной скоростью потока, и потом послушайте, сравнивая. Это и будет вашим личным субъективным тестом. Как вырезать кусочек? Очень просто. Это можно сделать программой, входящей в поставку Windows - "Звукозапись", или, в английском варианте, "Sound Recorder".

Вообще, можно некоторые особо качественно-зависимые композиции кодировать с высокой скоростью потока, а не особо важные - с низкой. Принимается примерно такое разделение: классика кодируется от 190кбит/с и выше, металл и рок - от 160кбит/с и выше, диско и вообще поп-музыка - от 128кбит/с.

Не стоит забывать и о кодировщике от компании Xing с одноименным названием. Отличительная черта - кодирование с очень высокой скоростью (быстрее, чем длительность самой композиции). Однако, эта хорошая черта омрачается тем фактом, что кодировщик усекает все частоты пакуемого файла от 16кГц и выше, что и позволяет ему уменьшить время кодирования (Обрезание частот выше 16 КГц существенно понижает качество сигнала - прим.ред.). На его основе построены преобразователи, работающие без больших промежуточных файлов формата WAV. Например, Cdex и MusicMatch JukeBox. Они производят кодирование "на лету", освобождая пользователя от рутинной работы с файлами WAV, кодировщиками, мучительных поисков места на винте и т.п. Последняя из двух - весьма неплохая программа, которая делает сборник в два-три щелчка мышкой. Практически, вставил компакт, нажал кнопку - и готово. Машина сама соединится с CDDB, скачает информацию, "сдернет" дорожку за дорожкой с компакта, на ходу кодируя и записывая их к вам на диск вместе с информацией о исполнителе, песне, альбоме и пр.

Перед тем как вы начнете кодировать один за другим файлы с ваших компактов, вам стоит узнать, что существует такая вещь как ID3tag - запись в самом файле MP3 информации об артисте, альбоме, название композиции, жанре и т.п. Эта запиcь вносится в каждый файл. Либо ручками - например, в WinaAmp'e (file info в окне playlist), либо специальными программами. Практически все проигрыватели MP3 файлов используют ID3tag для показа (прокрутки) этой информации во время проигрывания музыки.

Теперь мы подошли к понятию CDDB (см. статью о CDDB в этой теме недели. - прим. ред.). Это открытая база данных, к которой можно обращаться, используя интернет. Она содержит в себе огромное число списков CD, которые когда-либо выпускались в мире. База постоянно пополняется усилиями самих же пользователей.

Так вот, современные риперы (сдиральщики аудиодисков) имеют прекрасную возможность обращаться напрямую к CDDB, считывая информацию о вставленном в привод CD-ROM компакте и вместо безжизненных track01, track02 и т.д., как это было раньше (и будет, если вы не подключены к интернету) писать натуральные названия композиций. А если риппер совмещен с кодировщиком, то он сам вставит ID3 таги в получившиеся файлы (MP3). А заодно назовет файлы длинными именами по названиям песен. Кстати говоря, популярный проигрыватель WinAmp, обладающий возможностью играть не только файлы MP3, а и множество других форматов, может проигрывать аудио компакт-диск, на ходу связываясь с CDDB и показывая в playlist'е правильные названия композиций (Увы, если вы за файрволом или прокси - у вас, скорее всего, ничего не получится - прим.ред.). Такая особенность стала уже нормальной чертой у многих программ-проигрывателей CD.

Однако WinАmp, хоть и считается самым удобным и устойчивым, по качеству все же уступает таким проигрывателям как NAD и K-Jofol. У них сильно различается алгоритм "распаковки" MP3. У NAD он реализован лучше настолько, что на слух можно различить разницу. Но NAD давно не обновлялся, нет у него такого сильного сервиса в плане plugin'ов, поэтому количество поддерживаемых музыкальных форматов минимально. K-Jofol поддерживается лучше, чем NAD, но все же пока несколько неустойчив в работе. Стоит также упомянуть большой "комплекс" Jet-Audio (http://www.cowon.com/), в котором кроме уже обычного программного эквалайзера встроены интересные 3D звуковые эффекты.

Удачи вам в MPEGостроении!

Александр Чижов,
http://cooler.irk.ru/
chizh@irk.ru
Апрель 1999 г.


Украинская Баннерная Сеть

Главная  Алфавитный индекс  Справка  Добавить FAQ  E-mail
Новости  Поиск по сайту

© УкрFAQ 2010