Примечание: если у Вас есть замечания или предложения по дополнению данной статьи - пишите их в комментарии.
Введение
Хоть утилита EncSpot на отечественных форумах особой популярностью не пользуется, она незаменима в случае когда надо получить исчерпывающую информацию о каком-либо MP3 файлае - что он собой представляет, с какими параметрами и чем был закодирован. По полученным данным частично можно судить и о качестве MP3 материала.
Информация программой черпается из двух источников. Первый - это заголовок MP3 и непосредственно MP3 фреймы, второй - LAME Tag (записывается только последними версиями LAME).
Для примера возьмем материал собственноручно сконвертированный из lossless источника с параметрами:
LAME 3.98.4 -b 320 -q 0 --noreplaygain %s %d
(максимальное качество)
И так, запускаем программу EncSpot и переходим в папку с MP3 файлом, который хотим исследовать. В контекстном меню кроме стандартных доступны опции EnsSpot, нам понадобятся первые две:
Details
Здесь располагаются параметры в основном рассчитываемые непосредственно по MP3 файлу. На первой вкладке мы видим распределение битрейта (процентное отношение количества фреймов определенного битрейта к общему количеству фреймов):
Как видно по диаграмме, наш MP3 файл имеет постоянный битрейт (строго говоря, это не всегда значит, что он закодирован в режиме CBR).
Перейдем на вторую вкладку. Тут находится информация о межканальном кодировании, а также о типах блоков:
Первая диаграмма показывает процент фреймов закодированных в режиме L/R стерео, второй - Mid/Side стерео. Отсутствие фреймов Mid/Side говорит о форсировании режима L/R в параметрах (что нежелательно и может дать отрицательные результаты), или же о том, что при достаточном битрейте кодер самостоятельно выбрал для всех фреймов именно режим обычного стерео (єто бывает при кодировании несложного материала с высокими битрейтами). Вторая диаграмма демонстрирует процентное соотношение типов блоков. В MP3 длинные блоки используются для фрагментов содержащих шумовые сигналы, короткие - для переходных процессов (чтобы уменьшить пре-эхо).
На третей вкладке находится текстовая информация:
Рассмотрим каждый атрибут отдельно:
- Type - тип файла. Для MP3 - MPEG 1/2/2.5 (зависит от частоты дискретизации и битрейта) layer III. Для стандартных 44.1 кГц - это конечно же MPEG 1 Layer III
- Average Bitrate - средний битрейт для всего файла.
- Mode - режим кодирования каналов. В данном случае значение может быть mono/stereo/joint stereo/dual channel. При этом joint stereo будет отображаться как для файлов закодированных в обычном режиме Joint, так и в режиме Forced Joint Stereo.
- Frequency - частота дискретизации трека.
- Number of Frames - количество фреймов в MP3 файле.
- First Frame Position - позиция первого фрейма относительно начала файла (в байтах).
- ID3v2 Tag Size - количество байт отведенное тегам ID3v2.
- Length - продолжительность трека.
- Max. Reservoir - максимальное зарегистрированное количество данных в резервуаре бит (в байтах).
- Av. Reservoir - среднее количество данных в резервуаре бит. Использование резервуара является положительным качеством.
- Sync. errors - количество ошибок синхронизации в потоке.
- Emphasis - флаг означает, что к исходным данным был применен эмфазис.
- Scalefac - точно значение данного атрибута мне пока неизвестно. Возможно, это значение коэффициента масштабирования для всех частот, который применяется по причине отсутствия у MP3 коэффициента масштабирования для частот выше 16 кГц (недостаток стандарта).
- Encoder (guess) - предположительно использовавшийся кодер.
- Paddibg - точное значение этого флага неизвестно. Вероятно, имеется ввиду тишина добавляемая кодером в конец файла (при проигрывании устраняется декодерами с помощью MP3 Gapless Playback Info).
- Scalefac_scale - точное значение флага неизвестно. Вероятно, имеется ввиду использование общего коэффициента масштабирования (см. Scalefac).
- Scfsi - признак использования одинакового коэффициента масштабирования для обеих гранул фрейма.
- Bad Last Frame - точное значение флага неизвестно. Переводится как "плохой (или поврежденный?) последний фрейм".
- Xing Header - признак наличия Xing заголовка.
- VBR - при кодировании допускался переменный битрейт (может означать использование режимов VBR или ABR).
- Original - материал является оригиналом.
- Copyright - материал защищен авторским правом.
Lame Header
При наличии заголовка LAME можно получить доступ к дополнительной информации:
Первая вкладка содержит информацию полученную из специального LAME тега:
- Quality - значение параметра рассчитывается хитрым способом. Для ABR/CBR:
Quality=60-<значение q>
Напомню, параметр -q указывается при кодировании и отвечает за качество алгоритмов. Если он не указан (к сожалению, сегодня так кодируется большинство музыки, в то время как не помешало бы указать хотя бы -q 2), используется стандартное значение - 3. Следовательно, значение атрибута Quality в этом случае будет равно 57. В нашем же случае установлено максимальное качество алгоритмов и атрибут равен 60.
Для VBR значение атрибута рассчитывается иначе. Соответствие следующее:
V 0 - 100 V 1 - 90 ... V n - 100-n*10
(при этом десятые и сотые доли в значении параметра V отбрасываются: т.е., и V 2.99, и V 2 даст нам значение 80)
В случае когда используется быстрый режим VBR кодирования (напомню, включается ключом -f или -q от 5 до 9), из значения атрибута вычитается 5. Т.е.:
Quality(V n -f)=100-2*n-5
например:
Quality(V 2 -f)=100-2*10-5=75
- Version String - версия кодировщика LAME. Так как в заголовке значению отведено всего 5 символов, то, например, для LAME 3.98.2/3.98.3/3.98.4 значение будет одинаковым - 3.98r, где r означает релизную версию. По такому же принципу, буква b - это бета, a - альфа.
- Tag Revision - значение атрибута неизвестно. К ID3/APE тегам отношения не имеет.
- VBR Method - метод использовавшийся кодировщиком для распределения битрейта между фреймами. Это может быть cbr, abr или один из vbr методов.
vbr-mtrh - LAME 3.99a (default), LAME 3.98 (default), LAME 3.9x (--vbr-new) - на данный момент (3.98.4) самый стабильный метод
vbr-old / vbr-rh - LAME 3.99 (--vbr-old), LAME 3.98 (--vbr-old), LAME 3.9x (default) - старый режим VBR
vbr-new / vbr-mt - LAME 3.99 (--vbr-new) - ныне разрабатываемый, более гибкий алгоритм VBR кодирования - Lowpass Filter - частота среза НЧ фильтра (в Гц) при кодировании, все частоты выше данной - вырезаются. Полезно для определения т.н. апконверта: если данное значение явно не соответствует ширине спектра (на спектрограмме), очень высока вероятность, что это именно апконверт.
- Max Sample Value - значение атрибута неизвестно.
- Psycho-acoustic Model - использованная при кодировании психоакустическая модель. На данный момент актуальной является модель nspsytune, а gpsycho считается устаревшей.
- Safe Joint Stereo - безопасный режим Joint Stereo, который призван исключить дефекты межканального кодирования. В последних версиях LAME для высоких битрейтов используется по-умолчанию. Если безопасный режим отключен, в треке могут присутствовать слышимые искажения стереопанорамы.
- --nogap (continued) - признак того, что последние несколько семплов этого трека использовались для расчета начальных семплов следующего (с использованием ключа --nogap можно выполнять кодирование последовательности файлов без зазоров).
- --nogap (continuation) - признак того, что для расчета начальных семплов данного трека использовались конечные семплы предыдущего.
- ATH Type - номер используемой при кодировании модели абсолютного порога слышимости (Absolute Threshold of Hearing).
- Bitrate/ABR Bitrate/Minimum Bitrate (для CBR/ABR/VBR соответственно) - для CBR - битрейт трека, для ABR - целевой битрейт, для VBR - минимальный битрейт, который допускался при кодировании.
- Noise Shaping - тип (номер) примененной формовки шума.
- Stereo Mode - режим стерео кодирования. Может быть Joint Stereo/Stereo/Dual Stereo/Auto/Mono. Auto означает режим Forced Joint Stereo.
- Unwise Settings - значение параметра точно неизвестно. Дословно переводится как "неразумные настройки". Принимает положительное значение например при кодировании кодеком версии 3.93.1 с п параметром --preset insane.
- Input Frequency - частота дискретизации потока на входе кодера. Полезно например для выявления случаев апсемплинга 441000->48000 Гц (что в данном случае только вредит качеству).
- CRC - проверка совпадения контрольной суммы аудиоданных с CRC рассчитанной при кодировании.
![](/articles/encspot_mp3/xing.png)
- Frames - количество MP3 фреймов.
- Total Bitstream Bytes - количество байтов в потоке.
- VBR Scale - дублирует значение Quality в Lame Tag (см. выше).
- Table of Contents - значение неизвестно.
Дополнительно
Кроме EncSpot есть еще маленькая консольная утилита MP3 Packer, которая способна предоставить кое-какую интересную информацию о MP3 файле. Если запустить её с ключом -i, можно увидеть следующее:
Здесь самое важное для нас - это значения Minimum Possible Bitrate и Largest frame uses ... kbps. Если первое значение намного меньше среднего битрейта трека, значит много битов расходовалось впустую (они не применялись для кодирования аудиоданных) - фактически, это битрейт который можно достичь путем перепаковки данных из фреймов CBR в VBR (без потерь), для чего собственно и предназначена эта утилита. Второй параметр показывает максимальный битрейт используемый фреймом в данном файле. За счет использования резервуара бит этот битрейт может значительно превышать даже 320 кбит/с. Высокое значение этого параметра является положительной характеристикой MP3 файла, так как резервуар бит способствует наиболее разумному перераспределению битов между фреймами разной сложности.
Информация от спонсора
БензоТехника: купить культиватор по доступной цене. Высокое качество гарантировано.
Смотрите также:
EncSpot 2.2 Professional beta 2LAME + настройка