Перейти к содержимому



- - - - -

Форматы хранения музыки


  • Вы не можете ответить в тему
  • Вы не можете создать новую тему
Сообщений в теме: 2

#1 OFFLINE   emulek

 

    Свой

  • Юзвери
  • PipPipPipPipPipPip
  • сообщений: 164
    Последний визит:
    01 Май 2010 00:09
 

Отправлено 28 Апрель 2010 - 09:55

Часть первая.

Что такое музыка? Это - колебания воздуха. Они преобразуются микрофонами в колебания электрического напряжения, а они, в свою очередь преобразуются в цифры, преобразователь называется АЦП. Цифры все стандартизированы, самый распространённый стандарт следующий: напряжение кодируется целыми числами от -32768, до +32767 (2 байт), причём в секунду это кодирование происходит ровно 44100 раз. Этого числа вполне достаточно, что-бы передать все частоты до 22кГц. Таким образом, кодируя музыку в таком формате, мы достигаем такого качества, что как минимум 99% людей не в состоянии отличить закодированную музыку, от музыки закодированной более лучшим способом (ну например можно взять не 2, а 4 байта, и не 44100, а 88200 раз в секунду, но этого никто не услышит). Мало того, диапазон в 2 байта даже слишком широк, и практически все звуковые карты его просто не используют, просто не замечают не слишком важных битов.

Таким образом, нам нужно потратить 2 байта, причём на каждый канал (ушей у нас 2 шт :-) ), таким образом у нас получается 172K на секунду, или 604Мб в час. На стандартный CD влезает около 72 минут такой музыки, но конечно можно натолкать и немного больше.

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

Сжатие.

Недостатком такого кодирования является огромный объём. Можно попытаться сжать файл каким-нибудь архиватором. Архиваторы общего назначения (ZIP, RAR, gzip, bzip2, xz, etc...) ищут в файле повторяющиеся части, и сохраняют только первую найденную часть, вместо всех остальных таких-же частей записывается ссылка на первую часть. Таким образом, если в файле имеются повторяющиеся куски, то файл после сжатия уменьшается в объёме. К сожалению, данный способ рассчитан на текстовые файлы, а так-же на наборы мелких, и похожих файлов. Для музыки данный способ подходит очень плохо (567Мб сжимаются в 406Мб). Тем не менее, многие именно его и используют - wav может проигрывать любой плеер, даже тот, что поставляется вместе с OS Windows. Кроме того, какое-то сжатие всё-же есть, и в архив можно наталкать разных мелких файлов (обложки, тексты, рекламу, и проч.)

Битрейт.

Битрейтом называется ширина потока информации. Чем больше байтов в секунду преобразуется в звук, тем выше битрейт. Рассмотрим самый простой стандарт, который описан выше: в секунду там кодируется 172Кбайта. Однако, битрейт измеряется в килобитах, и потому нам надо умножить 172 на 8. Получается 1376кбпс (килобит в секунду).


CUE

Мы можем получить WAV файл просто скопировав его с CD-AUDIO диска (к примеру используя программу EAC). К сожелению, такой файл сложно слушать - весь альбом будет одним сплошным потоком музыки, а нам хотелось-бы видеть отдельные песни. Нужно где-то сохранить не только саму музыку, но и название альбома, исполнителя, названия всех треков, а так-же позиции начала этих треков. Вся эта информация может быть записана с того-же диска в обычный текстовый файл. Вот пример такого файла:
REM DISCID 9A0CDF0B
PERFORMER "Алиса"
TITLE "Стать Севера"
FILE "Alisa-Stat_Severa.wv" WAVE
  TRACK 01 AUDIO
	TITLE "Дым"
	PERFORMER "Алиса"
	INDEX 01 00:00:00
  TRACK 02 AUDIO
	TITLE "Иго любви"
	PERFORMER "Алиса"
	INDEX 00 04:43:68
	INDEX 01 04:45:68
  TRACK 03 AUDIO
	TITLE "На пороге неба"
	PERFORMER "Алиса"
	INDEX 00 09:58:62
	INDEX 01 10:00:62
(это только начало файла, впрочем далее идёт только информация об остальных тегах)
Как можно заметить, здесь не только вышеперечисленная информация, но и коментарии (идентификатор диска в первой строке), кроме того, здесь есть имя файла и его формат.

Используя CUE файл плеер может показывать названия треков и переключатся между ними.


Сжатие - 2

Так-как сжимать музыку обычными архиваторами не эффективно, то для сжатия используются специальные программы. Самая распространнённая из них - lame, которая сжимает музыку в формат MPEG 1 Layer 3, сокращённо mp3. Программу lame в чистом виде используют только линуксоиды, т.к. она работает в командной строке. Настоящие мужчины используют Windows и софт к нему. А уж этот софт вызывает lame для кодирования. К примеру, именно так и поступает вышеупомянутая программа EAC. Вы должны об этом помнить, хотя-бы для того, что-бы не удивлятся, по каким причинам EAC "не делает mp3". Нужно проверить - есть-ли у вас декодер, и при необходимости его скачать, причём, даже если декодер и есть, то желательно взять его последнюю стабильную версию. У меня сейчас используется эта:
LAME 32bits version 3.98.4 (http://www.mp3dev.org/)
(тут ещё и имеется ссылка на сайт данной программы)
Данный кодек бесплатный, потому скачать его необходимо. Даже если у вас он и есть (он поставляется в комплекте с многими программами), нужно не только скачивать новую версию, но и удалять множество старых.

Сжатие с потерями

Используя lame и кодирование в mp3 вы не только сжимаете музыку, но и её портите - качество звука ухудшается. Это происходит потому, что программа lame выкидывает часть информации из wav файла. Убирается далеко не всё, а только то, что большинство людей услышать не может. В lame используется т.н. "психоакустическая модель", некий сферический конь в вакууме, примерно похожий на уши большинства людей. Важно отметить, что это не просто модель слуха, а такая модель, которая получается при прослушивании определённой музыки (какая-то нерусская попсня, подробнее смотрите на сайте производителя). Если ваш слух заметно отличается от слуха большинства, или если ваша музыка значительно отличается от тестовой, то вы вполне сможете заметить ухудшение звука после сжатия этим кодеком.

Однако, можно регулировать количество вырезаемой информации кодеком lame. Обычно речь идёт о битрейте (количество информации в секунду, см. выше), однако эта "неправильная" характеристика. Её можно использовать не для оценки качества, а скорее для вычисления количества информации (объёма файла). Зная битрейт можно точно вычислить размер файла, если нам известна продолжительность звучания. Однако, так как мы не знаем как именно происходило кодирование, мы не можем однозначно утверждать, что было выкинуто, и какое качество у нас в итоге получилось. Мало того, нам неизвестно, что именно было в файле, и является-ли выкинутая информация важной для данных треков. То, что можно смело выкидывать в популярной музыке, ни в коем случае нельзя вырезать например из концертной записи рок исполнителя.

Битрейт и качество.

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

Для стандартной (популярной) музыки лучше всего подойдёт битрейт 256 кбпс, большинство людей не заметят разницы. Другую музыку (не важно, классику или панк-рок) лучше всего кодировать с битрейтом 320 кбпс (кодек lame больше не умеет, а остальные кодеки(mp3) по общепринятому мнению - хуже).

Сами разработчики lame приводят следующую таблицу:
Table 1.1: Bitrate versus sound quality
Bitrate   Bandwidth   Quality comparable to or better than
(битрейт    Полоса      Качество)
16 kbps 4.5 kHz shortwave radio (коротковолновое радио, используется радиолюбителями)
32 kbps 7.5 kHz AM radio (радио с амплитудной модуляцией, те, кому нет ещё и 20 лет о таком и не помнят наверное)
96 kbps 11 kHz FM radio (обычное УКВ радио)
128 kbps 16 kHz near CD (качество близкое к CD-AUDIO, слово "близкое" оставляю на совести разработчиков)
160-180 kbps
(variable bitrate) 20 kHz perceptual transparency( про VBR см. ниже, а этот битрейт разрабы считают "прозрачным")
256 kbps 22 kHz studio (студийное качество - для тестовых композиций и большинства людей - неотличимо от CD-AUDIO)

Используя lame можно не только кодировать wav файлы в mp3, но также и перекодировать имеющиеся mp3 файлы. При этом значение битрейта можно как уменьшать, так и увеличивать, в любом случае, при перекодировке программой lame (а также другими программами использующими lame или другие mp3-кодеки) качество только ухудшается. Потерянную информацию восстановить невозможно. Т.о. преобразование в более выский битрейт не имеет никакого практического смысла (ну разве что - на продажу, но это уже мошенничество ИМХО), а вот преобразовывать в более низкий часто полезно. К примеру, так я преобразовывал музыку перед загрузкой её в мобилу. Нет никакого смысла хранить рингтон в битрейте 320 кбпс, для этого более чем достаточно и 64 кбпс, причём - моно.

Кстати, о стерео: lame имеет 3 основных режима кодирования стерео звука:
1) моно. в этом режиме оба канала суммируются, и получается всего-лишь один. Применяется для устройств с одним динамиком, например для моей мобилы...
2) стерео. в этом режиме кодируются оба канала. (левый и правый)
3) joint stereo. В этом режиме кодируется не два канала, а их сумма и их разность. При декодировании эти потоки складываются и вычитаются, при этом каналы восстанавливаются (из арифметики известно, что (L+R)+(L-R)=2L, а (L+R)-(L-R)=2R). Именно этот режим и используется в большинстве случаев. Сделано это потому, что обычно оба канала очень похожи, потому в их разности содержится намного меньше информации, что позволяет сжать её намного лучше. Некоторые пологают, что "честное" стерео сжатие лучше, но это не так - разницы тут никакой нет, просто кодирование в стерео режиме приводит просто к увеличению объёма вдвое. Но так-как объём результатирующего файла lame изменить не может (ага, мы-же сами задали битрейт, а это и есть объём одной секунды), то кодирование в режиме стерео приводит к двойному ухудшению качества. На самом деле, если каналы отличаются очень сильно, то lame использует "честное" стерео - кодирует звук отдельно для левого и правого канала. Есть и четвёртый, дополнительный режим, в котором кодирование идёт в таком режиме принудительно, для каждого фрейма (фреймом называется маленький отрывок трека, каждый фрейм кодируется отдельно и независимо от других).

VBR

У lame имеется дополнительный режим переменного битрейта. В таком режиме lame сама выбирает битрейт для каждого фрейма. Некоторые фреймы кодируются с бОльшим битрейтом, а некоторые - с меньшим. К примеру, тищину можно вовсе не кодировать - там нет никакой информации. А очень тихие звуки можно кодировать с низким битрейтом - человек всё равно не расслышит некоторое ухудшение качества. Таким образом, применяя VBR можно значительно улучшить общее качества звука не увеличивая объём. К сожалению, многие плееры(особенно железные) не могут найти заданный отрывок внутри такого трека - вычисление позиции в таком файле значительно сложнее. А некоторые (совсем устаревшие) плееры вообще не умеют проигрывать VBR. При использовании VBR задаётся не битрейт, а уровень качества - число от 0 до 9. Общий битрейт получается разным, для разных треков (в зависимости от того, сколько лишнего смогла выкинуть из данного трека lame).

По моему мнению, следует использовать именно VBR, что-бы минимизировать потери качества.

Время кодирования

Кодирование lame занимает довольно большое время (оно конечно прямо зависит от быстродействия центрального процессора), и его также можно изменить: существует опция lame -h, которая позволяет кодировать лучше, но при этом время кодирования увеличивается. Так-как нам важно именно качество кодирования, то эту опцию необходимо использовать обязательно. VBR имеет и ещё одно приемущество - там этот режим включен всегда (используя lame не напрямую, а через другие программы, не всегда можно добавить ключ -h, а вот режим VBR можно включить практически в любой программе).

Дополнительные теги

Кроме самой музыки в mp3 трек можно внести дополнительную информацию - текстовые теги. Существует несколько тегов, вот список, допустимых для lame:
ID3 comments switches   parameters
--tt "title" title of song(название трека)
--ta "artist" artist who did the song(исполнитель)
--tl "album" album where it came from(название альбома)
--ty "year" year in which the song/album was made(год создания)
--tc "comment" additional info(комментарий)
--tn "track[/total]" audio/song track number and (optionally) the total number of tracks on the original recording.(номер трека, и (возможно) число треков в альбоме)
--tg "genre" genre of song (name or number)(жанр. желательно вводить число, например для моего любимого панк-рока - 121, но можно задать и свой жанр, если его нет в списке(список доступен в документации))
--ti "file" audio/song albumArt (jpeg/png/gif file, 128KB max, v2.3 tag) (картинка. максимум 128Кб)
--tv "id=value" user-defined frame specified by id and value (v2.3 tag) (можно задавать и свои, нестандартные теги)

Важно понимать, что эти теги хранятся в самом mp3 файле, а не в других, как например CUE файл для WAV. Существует множество программ для редактирования тегов, по моему мнению, наиболее удобен плагин для FAR (он во всяком случае не добавляет тупых комментов, вроде тех, что добавляются ворованной версией Tag&Rename). Конечно, теги можно задавать и в самой lame.

Раздача мулом mp3 файлов

Структура мп3 тегов подразумевает хранение каждого трека в одном файле. Таким образом, мы получаем каталог, в котором лежит несколько файлов (обычно 10 - 20). Раздавать такое мулом невозможно - файлы слишком мелкие, значительно меньше одной части, потому обмен частями невозможен - у нас есть либо целый файл, либо нет ничего (с т.з. мула). Кроме того, огромное число файлов приводят к значительному расходу памяти и общему понижению быстродействия. Но и это ещё не всё: многие редактируют теги, что привело к тому, что в сети есть множество одних и тех-же треков, которые мул тем не менее считает разными файлами (достаточно даже незначительно исправить название трека(не имя файла, а тег), что-бы хеш файла полностью изменился). Приходится упаковывать треки в какой-то контейнер. Это тоже плохо - многие удаляют контейнер, оставляя только музыку. Действительно, зачем хранить дважды одно и тоже? Многие используют WinRAR в качестве контейнера, это приводит к дополнительным проблемам - для распаковки требуется значительное количество времени и ресурсов (в WinRAR'е применяется симметричный алгоритм сжатия, который требует огромного числа ресурсов не только при упаковке, но и при распаковке файлов). Сжатие тут совершенно не нужно, так-как mp3 файлы уже сжаты, и единственное что там можно дожать - это текстовые теги. Конечно, сжатие в RAR'е можно отключить, но мало кто про это знает, а даже те кто знают не отключают сжатие из-за лени . Несколько более лучшим вариантом представляется ISO образ - его можно слушать не распаковывая, и при его открытие не требуется никаких ресурсов (на самом деле, ISO образ - это просто записанные подряд треки, с некоторой дополнительной информацией (имена файлов, даты их создания и прочее)). Однако, ОС Windows до сих пор не понимает данную файловую систему, потому приходится прикручивать к венде дополнительные костыли вроде DaemonTools. Не многие умеют это делать (опять таки, кто умеет - тем лень), и потому образ также в большинстве случаев распаковывается винраром и выбрасывается. Приходится признать, что раздача mp3 файлов - задача не для мула :-(

lossless

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

1) APE - этот формат закрыт, и не развивается. Что-бы его использовать, необходимо платить деньги. Правда имеется бесплатная версия кодека, но её можно использовать только самостоятельно, из командной строки. Вроде как и в некоторые плееры встроены декодеры, однако, они кривые и глючные. В "железе" если и применяется, то это тоже стОит денег. Не думаю, что этот формат следует использовать. Во всяком случае, о его развитии можно забыть :-(
2) FLAC - этот формат открыт, и его можно использовать (почти)без всяких ограничений и производителям железа, и создателям программ. Потому множество программных и железных плееров понимает и воспроизводит этот формат. К сожалению, данный формат также как и мп3 обычно используется как набор мелких файлов. Не смотря на то, что треки FLAC можно и слить в один большой файл, это обычно не применяется - проблема в том, что многие плееры такого не понимают (точнее не понимают большой файл как набор мелких треков).
3) WavPack - это сравнительно новый формат, который тем не менее уже понимают многие плееры. В отличие от других форматом, WavPack принято сохранять в виде ISO образа, который можно сразу слушать (без распаковки), хотя в этом образе могут быть и другие файлы, кроме музыки (например обложки и прочее). Несмотря на то, что для WavPack обычно применяют CUE файл (как и для WAV), все теги можно включать и в сам WV-файл (что естественно привело к путаннице).

Битрейт WV-файлов около 900 кбпс, что примерно в 2-3 раза выше, чем mp3@320, потому и файлы в vw почти в три раза больше. Файлы WavPack обычно имеют расширение .iso.wv, это не совсем правильно - на самом деле, это wv файл, который лежит в iso образе, потому расширение должно было-бы быть wv.iso. По моему мнению, именно эти файлы больше всего подходят для раздачи в ED2K сети.

На самом деле, формат WV допускает так-же сжатие с потерями (как и mp3), вот только я его ещё не пробовал. Возможно есть смысл перепаковывать mp3 в эквивалентный ISO.WV с потерями (в тех случаях, когда качество не играет роли, либо невозможно найти более качественный вариант). В отличие от mp3, выкинутая информация не теряется, а может быть сохранена в отдельный файл, используя который можно восстановить оригинал. Наверное это так-же может пригодится, ведь многим просто не нужен идеальный вариант...

Сообщение отредактировал emulek: 28 Апрель 2010 - 11:15


#2 OFFLINE   emulek

 

    Свой

  • Юзвери
  • PipPipPipPipPipPip
  • сообщений: 164
    Последний визит:
    01 Май 2010 00:09
 

Отправлено 28 Апрель 2010 - 09:56

про EAC:
http://forum.emule-r...showtopic=42747

#3 OFFLINE   drBatty

 

    Долгожитель

  • Юзвери
  • PipPipPipPipPipPipPipPipPipPip
  • сообщений: 1 023
    Последний визит:
    02 Май 2010 14:30
  • Пол:Мужчина
 

Отправлено 28 Апрель 2010 - 15:53

взято здесь: http://forum.emule-r...m...st&p=143399
автор: http://forum.emule-r...?showuser=95107
ну а я просто согласен с автором этого полезного сообщения.

Эээм.
Что и как слушать — каждый выбирает для себя сам. Нет тут универсального ответа.
Послушал, сравнил, выбрал. Ну и оценить свои нынешние и ближайшие потребности и возможности —
завтра диски станут болше, каналы толше, плээры вумнее, контент преумножится…
Главный плюс правильного lossless — делай с ним хоть mp3 хоть ogg, хоть shn, даже wma… что уж вздумается.

Примерно с год как научился иногда отличать на слух lossless и @320. @256 отличаю чаще; всё, что менее — почти всегда.

mp3 качаю в трёх случаях :
а) когда другого нет;
б) с ознакомительной целью (сомнения толкуются в пользу lossless, ибо вероятность,
что не понравится в mp3 выше, а времени на поиск и слив уйдёт примерно столько же)
в) когда искать lossless категорически ломает и (или) продукт заведомо одноразовый.

снобизм… не знаю. вряд ли. скорее форма самоограничения — если я столько же по объёму скачаю
в минимальном качестве — мне это никогда не послушать и не посмотреть. жадность и нескончаемая куча цыфромусора.
другая сторона медали (особоприменительно к ed2k) — хочется подерживать в сети и раздавать не абы что,
а то, что радовать других будет ещё несколько лет.

О форматах релиза :
1. APE скорее всего — нет, ибо глюкав. есть у него и фанаты и плюсы, да не так уж и много — у shn похоже не меньше.
2. FLAC без сомнений — да. Единственно : рипперу всё-таки предпочтительнее без нужды не бить диск на треки. И cue обязателен
ибо порезать легким мановением мыши, а вот собрать обратно…
помучился тут c редким релизом Dark Side of the Moon (была APE нарезка без cue).
3. WV есть формат удобный для риповки, раздачи, хранения и нарезки взад на идентичный себе СД.
в пользовании мне показался чуть менее, но приемлю и не возражаю.
4. WAV не пожатый RAR`ом по максимуму — дурной тон и всеобщее неудобство (и пожатый почти то же).
5. .shn и прочая экзотика… тут ключевое слово — «экзотика». По моему мнению вне ценителей лучше избегать.
6. Если есть возможность и желание отрелизить lossless + mp3 — это приятственно.
Делать @320 или старшие VBR — более на усмотрение, но менее 256 CBR пмсм уже не стоит.
7. Релизить только mp3… с учётом того, что в процессе автоматически получаем lossless (wav) — наполовину пустая трата времени.
Не готовы раздать сейчас — сделайте себе архивчик между делом. Через полгода-год глядишь да пригодится (как back-up тот же).

Как пожелание :*
(особенно если держите в руках родной диск) — не поленитесь сделать сии не столь уж сложные вещи:
а) отсканить и вложить обложки
(на мой вкус критерий достаточного разрешения скана — уверенная читаемость всего существенного текста).
б) вложить небольшое описание (хотя бы : Исполнитель-Альбом-Год выхода(Страна, Лейбл)-Треклист-Формат-Размер в Mb-Релизер(по вкусу). желательно англочитаемо**).
в) лог EAC вообще-то тоже желателен в комплекте.
д) пропишите названия треков (не часто, но встречается иногда Track01…)
г) назовите файл по-человечьи : Исполнитель.Год.Альбом.Дополнительно.[Формат@битрейт для mp3].[релизер(по вкусу)].
если название русское… вообще неплохо бы его латиницей продублировать, но тут уже по вкусу.
(и пробелы точками сейчас мало кто заменяет, а зря).

И важный коммент :*
При риповке, конвертациях, сжатии понимайте, что делаете. Проявите внимательность и аккуратность.
Ибо плохой релиз зачастую хуже его отсутствия, и болтается по сети потом невесть что…
Годных инструментов для этого не так уж и много (по минимуму достаточно освоить EAC).
Почитать и понять что к чему не особо сложно.

* сиё было вниманию начинающих… кто умеет — тот знает ©
** почему я за присутствие латиницы (как дополнение к кириллице):
а) совместимость (в той же винде кириллица есть лишь костыли и припарки);
б) есть некоторое количество наших соотечественников, разбросанных по всему миру,
у которых технически нет и, возможно, не будет полноценной русской кодировки.
и есть некое количество интересующихся русской культурой и т.д. и т.п.
пусть немного, но есть. не хочется их обделять.
в) про англо- и европееязычные релизы по-моему понятно… ed2k суть интернациональна. не стоит делить её на языковые фрагменты.





Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных