Э. Таненбаум - Компьютерные сети. (4-е издание) (DJVU) (1130092), страница 206
Текст из файла (страница 206)
Сжатие звука выполняется путем замеров формы сигналов, производимых с частотой 32 000, 44 100 или 48 000 раз в секунду. Замеры могут сниматься по одному или двум каналам в одной из четырех комбинаций: 1, Монофонический звук (одпн входной поток). 2. Двойной монофонический звук (например, звуковая дорожка на английском и японском). 3. Разъединенное стерео (каждый канал сжимается отдельно). 4.
Объединенное стерео (учитывается межканальная избыточность сигнала). Для начала выбирается желаемая выходная битовая скорость. С помощью алгоритма МРЗ можно сжать записанную на компакт-диск стереофоническую запись рок-н-ролла до 96 Кбит/с с потерей качества, едва заметной даже для фанатов рок-н-ролла, не лишенных слуха. Если мы хотим вперегнать в МРЗ» фортепианный концерт, нам понадобится битовая скорость по крайней мере 128 Кбит/с. Чем обусловлена такая разница7 Дело в том, что соотношение сигнал/шум в рок-нролле гораздо выше, чем в фортепианном концерте (только в техническом смысле, разумеется), Можно, впрочем, выбрать меньшую битовую скорость и получить более низкое качество воспроизведения. После этого отсчеты обрабатываются группами по 1152 (что занимает около 26 мс). Каждая группа предварительно проходит через 32 цифровых фильтра, выделяющих 32 частотных диапазона.
Одновременно входной сигнал заводится в психоакустическую модель для определения маскирующих частот. Затем каждый из 32 частотных диапазонов преобразуется с целью получения более точного спектрального разрешения. Следующим шагом является распределение имеющегося запаса бит между частотными диапазонами. При этом большее число бит отводится под диапазон с наибольшей немаскированной спектральной мощностью, меньшее — под немаскируемые диапазоны с меньшей спектральной мощностью, и совсем не отводятся биты под маскируемые диапазоны.
Наконец, битовые последовательности шифруются с помощью кода Хаффмана (Нп((тап), который присваивает короткие коды числам, появляющимся наиболее часто, и длинные — появляющимся редко. На самом деле, эта тема далеко не исчерпана. Существуют методы шумоподавления, сглаживания сигналов, использования межканальной избыточности (при наличии такой возможности), однако все это, к сожалению, невозможно охватить в рамках нашей книги.
Более формально изложенные математические основы этих процессов даются в книге (Рап, 1995). Мультимедиа 707 Потоковое аудио Перейдем от технологии оцифровки звука к трем сетевым приложениям, использующим ее. Первое, что мы рассмотрим, будет потоковое аудио, то есть прослушивание звукозаписей через Интернет. Это иногда называется «музыкой по заказу».
Затем мы познакомимся с интернет-радио и технологией передачи речи поверх 1Р. В Интернете есть множество музыкальных веб-сайтов, на многих из которых представлены списки песен, которые пользователь может прослушать, щелкнув на названии. Подобные услуги на некоторых сайтах бесплатны (например, таким образом молодая группа может рекламировать свою деятельность и искать своего слушателя); иногда за прослушивание взимается плата, хотя при этом чаще всего есть возможность бесплатно ознакомиться с композицией (например, первые 15 секунд записи). Наиболее распространенный способ реализации такой системы «музыки по заказуе показан на рис. 7.28. Клиент Сераер Рис.
7.2В. Простейший способ реализации технологии «музыки па заказу на ееб-сайте Процесс начинается, когда пользователь щелкает на названии песни. Вначале вступает в дело браузер. Первый шаг заключается в установке ТСР-соединения с веб-сервером, на который указывает гиперссылка. На втором шаге ему направляется НТТР-запрос СЕТ, содержащий заявку на получение файла. Шаги 3 и 4 выполняются сервером: он получает песню (которая представляет собой обычный файл в формате МРЗ или каком-нибудь другом) с диска и отсылает ее браузеру. Если размер файла превышает объем памяти сервера, он может извлекать и отправлять его поблочно, По М1МЕ-типу файла (например, аийоГглрЗ) или по расширению браузер определяет способ его воспроизведения.
Обычно запускается вспомогательное приложение, ассоциированное с данным типом файлов, например, Веа10пе Р1ауег, Ж!пдочгз Мейа Р1ауег или Ж1пашр. Обычно браузер общается со вспомогательным приложением, записывая информацию, предназначенную для воспроизведения, во временный файл.
Поэтому до начала проигрывания весь музыкальный файл будет записан во временный файл на диске (шаг 5). После этого будет запущен проигрыватель, которому браузер передаст имя временного файла. Шаг 6 768 Глава 7. Прикладной уровень заключается в поблочном считывании данных из файла и непосредственном воспроизведении музыки. В принципе, такой подход совершенно корректен, и музыку пользователь услышит. Единственная серьезная проблема заключается в том, что вся запись должна быть предварительно передана по сети. Если музыкальный файл занимает 4 Мбайт (типичный размер аудиофайла с песней в формате МРЗ) и передается при помощи модема со скоростью 56 Кбит/с, пользователь будет наслаждаться тишиной в течение почти 10 минут, прежде чем услышит музыку.
Далеко не все меломаны приходят от этого в восторг. К тому же не стоит забывать, что после окончания данной песни следующую можно будет услышать также только через 10 минут. Как обойти эту проблему, не внося изменений в работу браузера? Музыкальные сайты пришли к следующей схеме. Файл, связанный гиперссылкой с названием песни, на самом деле является не музыкальным, а метафайлом. Метафайл обычно очень короткий, в типичной ситуации он состоит всего лишь из одной текстовой строки, которая выглядит примерно так: ггар://1оеа-аоо1о-аегчеггаопд-0025.арз Получив такой однострочный файл, браузер записывает его во временный файл, запускает в качестве вспомогательного приложения проигрыватель и передает ему, как обычно, имя временного файла.
Проигрыватель видит, что временный файл содержит 11К1.. Он соединяется с сервером )оез-аиайо-зетоег и запрашивает песню. Вы, должно быть, уже заметили, что браузер не принимает участия в этом процессе. В большинстве случаев сервер, указанный в метафайле, не совпадает с веб-сервером, содержащим ссылку на метафайл. Более того, обычно это даже не НТТР- сервер, а специализированный мультимедийный сервер.
В приведенном примере этот сервер использует протокол КТВР, это становится понятно при взгляде на ссылку — она начинается с названия схемы, ~й.р. КТЯР описан в КРС 2326. Проигрыватель мультимедиа решает следующие 4 основные задачи: 1. Управление интерфейсом пользователя. 2.
Обработка ошибок передачи. 3. Распаковка сжатых аудиоданных. 4. Устранение флуктуации (джнттера). Большинство современных программ для воспроизведения мультимедиа имеют привлекательный интерфейс. Часто внешний вид панелей управления (оболочек) можно менять. Как мы уже сказали, в задачи проигрывателя входит общение с пользователем. Вторая его задача — обработка ошибок.
Прн передаче музыки в реальном времени редко используется протокол ТСР, так как ошибки и повторные передачи могут приводить к недопустимо долгим паузам. Вместо этого передача осуществляется по протоколу типа КТР, который мы изучали в главе 6. Подобно большинству протоколов реального времени, КТР работает поверх 1Л)Р, то есть М льтимедиа 769 Этот пакет содержит 220 нечетных отсчетов Этот пакет содержит 220 четных отсчетов Потеряны Пакет 0 5 10 15 20 25 30 Время, мс — — ~ Рис. 7.29. Когда пакеты содержат чередующиеся отсчеты, потеря пакета уменьшает частоту следования отсчетов, но не приводит к возникновению паузы Третья задача программы-проигрывателя заключается в декодировании сжатых аудиоданных.
Несмотря на высокую требуемую интенсивность вычислений, применяемый метод довольно очевндсн. Четвертая задача — устранение флуктуации (джиттера), бича всех систем реального времени. Все системы воспроизведения потокового аудио перед началом пакеты могут теряться по пути. Проблему потерянных пакетов решает проигры. ватель. Иногда для упрощения обработки ошибок при передаче музыки применяется принцип чередования, Например, пакет может содержать 220 стереоотсчетов, каждый из которых содержит пару 16-разрядных чисел, Этого вполне достаточно для 5 мс звучания музыки.
Однако протокол может посылать в одном пакете все нечетные отсчеты для 10 мс звучания, а в следующем — все четные отсчеты для того же интервала. Таким образом, потеря одного пакета не приведет к возникновению паузы длиной 5 мс, вместо этого будет потерян каждый второй отсчет 10-миллисекундного интервала. Эта утрата может быть восполнена, если проигрыватель произведет интерполяцию, используя предыдущий и следующий отсчеты (относительно каждого потерянного).
Таким образом, примерные значения будут восстановлены. Принцип чередования, используемый для восстановления ошибок, показан на рис. 7.29. Здесь видно, что каждый пакет содержит чередующиеся отсчеты для 10-миллисекундного интервала. В результате потери пакета 3 (см. рисунок) не возникает паузы, а только лишь на некоторое время снижается частота следования отсчетов. Утерянные значения путем интерполяции могут быть восстановлены; это обеспечит непрерывность звучания.
Данная конкретная схема работает только с несжатыми отсчетами, однако она показывает, как при помощи хитрого алгоритма кодирования превращать потерянные пакеты не в раздражающие паузы, а в непрерывные интервалы с пониженным качеством. Между тем в 1(ГС 3119 описан метод, позволяющий применять аналогичную процедуру к сжатым аудиоданным. 770 Глава 7. Прикладной уровень проигрывания буферизируют около 10-15 с звучания, как показано на рис,?.30. В идеале — сервер должен продолжать заполнять буфер со скоростью, необходимой для проигрывателя, однако в реальности это может и не происходить, поэтому всегда полезно иметь постоянную обратную связь.
Существуют два способа постоянного поддержания буфера в заполненном состоянии. При использовании выталкивающего сервера (рц11 зегуег) проигрыватель отправляет запросы на получение нового блока всегда, когда в буфере есть свободное место. Цель этого метода состоит в том, чтобы загружать в буфер как можно больше данных.