Многие знают (или догадываются), что поток MP3 состоит из последовательности пакетов (фреймов), каждый из которых кодирует ровно 1152 сэмпла исходного звука. Каждый пакет состоит из заголовка (4 байта) и пожатых данных. Длина пакета может быть весьма разнообразной, но она нигде не хранится. Она вычисляется по данным из заголовка. Чтобы ее узнать, надо всего лишь: взять из заголовка два бита, описывающие версию формата, два бита, описывающие частоту сигнала, четыре бита, описывающие битрейт, и один бит, описывающий паддинг. Затем под двум битам частоты взять ее значение из таблички, но если версия 2, то частоту разделить на 2, а если версия 0, то частоту разделить на 4. Затем если версия 3, то взять битрейт из одной таблички (используя те 4 бита заголовка в качестве индекса), а если версия не 3, то из другой таблички. Потом, если версия 3, то взять число 144, а если не 3, то взять 72, умножить на битрейт, разделить на частоту и прибавить паддинг (0 или 1). Повторять для каждого пакета, ибо в случае VBR пакеты в потоке разной длины. Получается, что при фиксированных частоте и битрейте энкодер должен вписаться ровно в заданный размер с точностью до двух байтов, а если не вписывается, то жать сильнее и лишнее место забивать мусором. Зато длину не передаем, большая экономия! :) Вот такой замечательный формат, не зря же за его использование лицензионных отчислений просят.
Page Summary
Style Credit
- Style: Neutral Good for Practicality by
Expand Cut Tags
No cut tags
no subject
Date: 2011-03-09 11:11 am (UTC)А OGG - тоже извратный. В MP3 хотя бы понятно, как seek делать.
no subject
Date: 2011-03-09 11:17 am (UTC)no subject
Date: 2011-03-09 05:27 pm (UTC)А чо оно не даёт проигрывать до того, как закончится загрузка видео?
ps Хорошее качество, фпс низковат.
no subject
Date: 2011-03-09 06:45 pm (UTC)Это был баг. Играло столько, сколько загружено звука (пока не пришел сигнал, что больше звука не будет), что на файлах без звука приводило к неигранию вообще до полной загрузки. Поправил.
FPS - с таким записано само видео. Кодек/плеер может и в несколько раз больший выдавать.
no subject
Date: 2011-03-09 07:10 pm (UTC)no subject
Date: 2011-03-10 04:28 am (UTC)no subject
Date: 2011-03-09 07:17 pm (UTC)Пользуясь случаем хотел бы передать отдельное спасибо за "Аналогии лгут" и "Экзамены Икена".
no subject
Date: 2011-03-09 07:23 pm (UTC)